<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE AllowAmbiguousTypes #-}</span><span>
</span><span id="line-2"></span><span class="hs-pragma">{-# LANGUAGE Trustworthy #-}</span><span>
</span><span id="line-3"></span><span class="hs-pragma">{-# LANGUAGE ViewPatterns #-}</span><span>
</span><span id="line-4"></span><span class="hs-pragma">{-# LANGUAGE TypeOperators #-}</span><span>
</span><span id="line-5"></span><span class="hs-pragma">{-# LANGUAGE BangPatterns #-}</span><span>
</span><span id="line-6"></span><span class="hs-pragma">{-# LANGUAGE RankNTypes #-}</span><span>
</span><span id="line-7"></span><span class="hs-pragma">{-# LANGUAGE PatternSynonyms #-}</span><span>
</span><span id="line-8"></span><span class="hs-pragma">{-# LANGUAGE CPP #-}</span><span>
</span><span id="line-9"></span><span class="hs-pragma">{-# LANGUAGE ConstraintKinds #-}</span><span>
</span><span id="line-10"></span><span class="hs-pragma">{-# LANGUAGE DataKinds #-}</span><span>
</span><span id="line-11"></span><span class="hs-pragma">{-# LANGUAGE FlexibleInstances #-}</span><span>
</span><span id="line-12"></span><span class="hs-pragma">{-# LANGUAGE GADTs #-}</span><span>
</span><span id="line-13"></span><span class="hs-pragma">{-# LANGUAGE MagicHash #-}</span><span>
</span><span id="line-14"></span><span class="hs-pragma">{-# LANGUAGE NoImplicitPrelude #-}</span><span>
</span><span id="line-15"></span><span class="hs-pragma">{-# LANGUAGE PolyKinds #-}</span><span>
</span><span id="line-16"></span><span class="hs-pragma">{-# LANGUAGE ScopedTypeVariables #-}</span><span>
</span><span id="line-17"></span><span class="hs-pragma">{-# LANGUAGE StandaloneDeriving #-}</span><span>
</span><span id="line-18"></span><span class="hs-pragma">{-# LANGUAGE UndecidableInstances #-}</span><span>
</span><span id="line-19"></span><span class="hs-pragma">{-# LANGUAGE TypeApplications #-}</span><span>
</span><span id="line-20"></span><span class="hs-pragma">{-# LANGUAGE TypeFamilies #-}</span><span>
</span><span id="line-21"></span><span class="hs-pragma">{-# LANGUAGE StandaloneKindSignatures #-}</span><span>
</span><span id="line-22"></span><span class="hs-pragma">{-# LANGUAGE LinearTypes #-}</span><span>
</span><span id="line-23"></span><span>
</span><span id="line-24"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-25"></span><span class="hs-comment">-- |</span><span>
</span><span id="line-26"></span><span class="hs-comment">-- Module      :  Data.Typeable.Internal</span><span>
</span><span id="line-27"></span><span class="hs-comment">-- Copyright   :  (c) The University of Glasgow, CWI 2001--2011</span><span>
</span><span id="line-28"></span><span class="hs-comment">-- License     :  BSD-style (see the file libraries/base/LICENSE)</span><span>
</span><span id="line-29"></span><span class="hs-comment">--</span><span>
</span><span id="line-30"></span><span class="hs-comment">-- The representations of the types TyCon and TypeRep, and the</span><span>
</span><span id="line-31"></span><span class="hs-comment">-- function mkTyCon which is used by derived instances of Typeable to</span><span>
</span><span id="line-32"></span><span class="hs-comment">-- construct a TyCon.</span><span>
</span><span id="line-33"></span><span class="hs-comment">--</span><span>
</span><span id="line-34"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-35"></span><span>
</span><span id="line-36"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">Data.Typeable.Internal</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-37"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Typeable and kind polymorphism</span></span><span>
</span><span id="line-38"></span><span>    </span><span class="hs-comment">--</span><span>
</span><span id="line-39"></span><span>    </span><span class="hs-comment">-- #kind_instantiation</span><span>
</span><span id="line-40"></span><span>
</span><span id="line-41"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Miscellaneous</span></span><span>
</span><span id="line-42"></span><span>    </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier">Fingerprint</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-43"></span><span>
</span><span id="line-44"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Typeable class</span></span><span>
</span><span id="line-45"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier">Typeable</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-46"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#withTypeable"><span class="hs-identifier">withTypeable</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-47"></span><span>
</span><span id="line-48"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Module</span></span><span>
</span><span id="line-49"></span><span>    </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier">Module</span></a></span><span class="hs-special">,</span><span>  </span><span class="hs-comment">-- Abstract</span><span>
</span><span id="line-50"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#moduleName"><span class="hs-identifier">moduleName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#modulePackage"><span class="hs-identifier">modulePackage</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#rnfModule"><span class="hs-identifier">rnfModule</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-51"></span><span>
</span><span id="line-52"></span><span>    </span><span class="annot"><span class="hs-comment">-- * TyCon</span></span><span>
</span><span id="line-53"></span><span>    </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier">TyCon</span></a></span><span class="hs-special">,</span><span>   </span><span class="hs-comment">-- Abstract</span><span>
</span><span id="line-54"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConPackage"><span class="hs-identifier">tyConPackage</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConModule"><span class="hs-identifier">tyConModule</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConName"><span class="hs-identifier">tyConName</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConKindArgs"><span class="hs-identifier">tyConKindArgs</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConKindRep"><span class="hs-identifier">tyConKindRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-55"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#tyConFingerprint"><span class="hs-identifier">tyConFingerprint</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-56"></span><span>    </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier">KindRep</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#KindRepTypeLit"><span class="hs-identifier">KindRepTypeLit</span></a></span><span class="hs-special">)</span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TypeLitSort"><span class="hs-identifier">TypeLitSort</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-57"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#rnfTyCon"><span class="hs-identifier">rnfTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-58"></span><span>
</span><span id="line-59"></span><span>    </span><span class="annot"><span class="hs-comment">-- * TypeRep</span></span><span>
</span><span id="line-60"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier">TypeRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-61"></span><span>    </span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#App"><span class="hs-identifier">App</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Con"><span class="hs-identifier">Con</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Con%27"><span class="hs-identifier">Con'</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Fun"><span class="hs-identifier">Fun</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-62"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier">typeRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-63"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#typeOf"><span class="hs-identifier">typeOf</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-64"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier">typeRepTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-65"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier">typeRepFingerprint</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-66"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#rnfTypeRep"><span class="hs-identifier">rnfTypeRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-67"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-identifier">eqTypeRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-68"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier">typeRepKind</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-69"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#splitApps"><span class="hs-identifier">splitApps</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-70"></span><span>
</span><span id="line-71"></span><span>    </span><span class="annot"><span class="hs-comment">-- * SomeTypeRep</span></span><span>
</span><span id="line-72"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier">SomeTypeRep</span></a></span><span class="hs-special">(</span><span class="hs-glyph">..</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-73"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#someTypeRep"><span class="hs-identifier">someTypeRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-74"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#someTypeRepTyCon"><span class="hs-identifier">someTypeRepTyCon</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-75"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#someTypeRepFingerprint"><span class="hs-identifier">someTypeRepFingerprint</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-76"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#rnfSomeTypeRep"><span class="hs-identifier">rnfSomeTypeRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-77"></span><span>
</span><span id="line-78"></span><span>    </span><span class="annot"><span class="hs-comment">-- * Construction</span></span><span>
</span><span id="line-79"></span><span>    </span><span class="annot"><span class="hs-comment">-- | These are for internal use only</span></span><span>
</span><span id="line-80"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrType"><span class="hs-identifier">mkTrType</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrCon"><span class="hs-identifier">mkTrCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrApp"><span class="hs-identifier">mkTrApp</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrAppChecked"><span class="hs-identifier">mkTrAppChecked</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrFun"><span class="hs-identifier">mkTrFun</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-81"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#mkTyCon"><span class="hs-identifier">mkTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#mkTyCon%23"><span class="hs-identifier">mkTyCon#</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-82"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#typeSymbolTypeRep"><span class="hs-identifier">typeSymbolTypeRep</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#typeNatTypeRep"><span class="hs-identifier">typeNatTypeRep</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-83"></span><span>  </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-84"></span><span>
</span><span id="line-85"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#"><span class="hs-identifier">GHC.Prim</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#FUN"><span class="hs-identifier">FUN</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-86"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Base.html"><span class="hs-identifier">GHC.Base</span></a></span><span>
</span><span id="line-87"></span><span class="hs-keyword">import</span><span> </span><span class="hs-keyword">qualified</span><span> </span><span class="annot"><a href="GHC.Arr.html"><span class="hs-identifier">GHC.Arr</span></a></span><span> </span><span class="hs-keyword">as</span><span> </span><span class="annot"><span class="hs-identifier">A</span></span><span>
</span><span id="line-88"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#"><span class="hs-identifier">GHC.Types</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier">TYPE</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Multiplicity"><span class="hs-identifier">Multiplicity</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Many"><span class="hs-identifier">Many</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-89"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Data.Type.Equality.html"><span class="hs-identifier">Data.Type.Equality</span></a></span><span>
</span><span id="line-90"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.List.html"><span class="hs-identifier">GHC.List</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.List.html#splitAt"><span class="hs-identifier">splitAt</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.List.html#foldl%27"><span class="hs-identifier">foldl'</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.List.html#elem"><span class="hs-identifier">elem</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-91"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Word.html"><span class="hs-identifier">GHC.Word</span></a></span><span>
</span><span id="line-92"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Show.html"><span class="hs-identifier">GHC.Show</span></a></span><span>
</span><span id="line-93"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.TypeLits.html"><span class="hs-identifier">GHC.TypeLits</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier">KnownSymbol</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#symbolVal%27"><span class="hs-identifier">symbolVal'</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#AppendSymbol"><span class="hs-identifier">AppendSymbol</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-94"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.TypeNats.html"><span class="hs-identifier">GHC.TypeNats</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#KnownNat"><span class="hs-identifier">KnownNat</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#natVal%27"><span class="hs-identifier">natVal'</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-95"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="Unsafe.Coerce.html"><span class="hs-identifier">Unsafe.Coerce</span></a></span><span> </span><span class="hs-special">(</span><span> </span><span class="annot"><a href="Unsafe.Coerce.html#unsafeCoerce"><span class="hs-identifier">unsafeCoerce</span></a></span><span> </span><span class="hs-special">)</span><span>
</span><span id="line-96"></span><span>
</span><span id="line-97"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html"><span class="hs-identifier">GHC.Fingerprint.Type</span></a></span><span>
</span><span id="line-98"></span><span class="hs-keyword">import</span><span> </span><span class="hs-pragma">{-# SOURCE</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="annot"><a href="GHC.Fingerprint.html"><span class="hs-identifier">GHC.Fingerprint</span></a></span><span>
</span><span id="line-99"></span><span>   </span><span class="hs-comment">-- loop: GHC.Fingerprint -&gt; Foreign.Ptr -&gt; Data.Typeable</span><span>
</span><span id="line-100"></span><span>   </span><span class="hs-comment">-- Better to break the loop here, because we want non-SOURCE imports</span><span>
</span><span id="line-101"></span><span>   </span><span class="hs-comment">-- of Data.Typeable as much as possible so we can optimise the derived</span><span>
</span><span id="line-102"></span><span>   </span><span class="hs-comment">-- instances.</span><span>
</span><span id="line-103"></span><span class="hs-comment">-- import {-# SOURCE #-} Debug.Trace (trace)</span><span class="hs-cpp">

#include &quot;MachDeps.h&quot;
</span><span>
</span><span id="line-107"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
                The TyCon type
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-112"></span><span>
</span><span id="line-113"></span><span class="annot"><a href="Data.Typeable.Internal.html#modulePackage"><span class="hs-identifier hs-type">modulePackage</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-114"></span><span id="modulePackage"><span class="annot"><span class="annottext">modulePackage :: Module -&gt; String
</span><a href="Data.Typeable.Internal.html#modulePackage"><span class="hs-identifier hs-var hs-var">modulePackage</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span id="local-6989586621679537071"><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537071"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="annot"><span class="annottext">TrName
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrName -&gt; String
</span><a href="Data.Typeable.Internal.html#trNameString"><span class="hs-identifier hs-var">trNameString</span></a></span><span> </span><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537071"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-115"></span><span>
</span><span id="line-116"></span><span class="annot"><a href="Data.Typeable.Internal.html#moduleName"><span class="hs-identifier hs-type">moduleName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-117"></span><span id="moduleName"><span class="annot"><span class="annottext">moduleName :: Module -&gt; String
</span><a href="Data.Typeable.Internal.html#moduleName"><span class="hs-identifier hs-var hs-var">moduleName</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="annot"><span class="annottext">TrName
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537069"><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537069"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrName -&gt; String
</span><a href="Data.Typeable.Internal.html#trNameString"><span class="hs-identifier hs-var">trNameString</span></a></span><span> </span><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537069"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-118"></span><span>
</span><span id="line-119"></span><span class="annot"><a href="Data.Typeable.Internal.html#tyConPackage"><span class="hs-identifier hs-type">tyConPackage</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-120"></span><span id="tyConPackage"><span class="annot"><span class="annottext">tyConPackage :: TyCon -&gt; String
</span><a href="Data.Typeable.Internal.html#tyConPackage"><span class="hs-identifier hs-var hs-var">tyConPackage</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537068"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621679537068"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="annot"><span class="annottext">TrName
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; String
</span><a href="Data.Typeable.Internal.html#modulePackage"><span class="hs-identifier hs-var">modulePackage</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621679537068"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-121"></span><span>
</span><span id="line-122"></span><span class="annot"><a href="Data.Typeable.Internal.html#tyConModule"><span class="hs-identifier hs-type">tyConModule</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-123"></span><span id="tyConModule"><span class="annot"><span class="annottext">tyConModule :: TyCon -&gt; String
</span><a href="Data.Typeable.Internal.html#tyConModule"><span class="hs-identifier hs-var hs-var">tyConModule</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537067"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621679537067"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span class="annot"><span class="annottext">TrName
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; String
</span><a href="Data.Typeable.Internal.html#moduleName"><span class="hs-identifier hs-var">moduleName</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621679537067"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-124"></span><span>
</span><span id="line-125"></span><span class="annot"><a href="Data.Typeable.Internal.html#tyConName"><span class="hs-identifier hs-type">tyConName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-126"></span><span id="tyConName"><span class="annot"><span class="annottext">tyConName :: TyCon -&gt; String
</span><a href="Data.Typeable.Internal.html#tyConName"><span class="hs-identifier hs-var hs-var">tyConName</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Module
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537066"><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537066"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrName -&gt; String
</span><a href="Data.Typeable.Internal.html#trNameString"><span class="hs-identifier hs-var">trNameString</span></a></span><span> </span><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537066"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-127"></span><span>
</span><span id="line-128"></span><span class="annot"><a href="Data.Typeable.Internal.html#trNameString"><span class="hs-identifier hs-type">trNameString</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TrName"><span class="hs-identifier hs-type">TrName</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>
</span><span id="line-129"></span><span id="trNameString"><span class="annot"><span class="annottext">trNameString :: TrName -&gt; String
</span><a href="Data.Typeable.Internal.html#trNameString"><span class="hs-identifier hs-var hs-var">trNameString</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TrNameS"><span class="hs-identifier hs-type">TrNameS</span></a></span><span> </span><span id="local-6989586621679537065"><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679537065"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Addr# -&gt; String
</span><a href="../../ghc-prim/src/GHC.CString.html#unpackCStringUtf8%23"><span class="hs-identifier hs-var">unpackCStringUtf8#</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679537065"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-130"></span><span class="annot"><a href="Data.Typeable.Internal.html#trNameString"><span class="hs-identifier hs-var">trNameString</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TrNameD"><span class="hs-identifier hs-type">TrNameD</span></a></span><span> </span><span id="local-6989586621679537064"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679537064"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679537064"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-131"></span><span>
</span><span id="line-132"></span><span class="annot"><a href="Data.Typeable.Internal.html#tyConFingerprint"><span class="hs-identifier hs-type">tyConFingerprint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-133"></span><span id="tyConFingerprint"><span class="annot"><span class="annottext">tyConFingerprint :: TyCon -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#tyConFingerprint"><span class="hs-identifier hs-var hs-var">tyConFingerprint</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span id="local-6989586621679537063"><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679537063"><span class="hs-identifier hs-var">hi</span></a></span></span><span> </span><span id="local-6989586621679537062"><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679537062"><span class="hs-identifier hs-var">lo</span></a></span></span><span> </span><span class="annot"><span class="annottext">Module
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TrName
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-134"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Word64 -&gt; Word64 -&gt; Fingerprint
</span><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-var">Fingerprint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word# -&gt; Word64
</span><a href="GHC.Word.html#W64%23"><span class="hs-identifier hs-var">W64#</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679537063"><span class="hs-identifier hs-var">hi</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Word# -&gt; Word64
</span><a href="GHC.Word.html#W64%23"><span class="hs-identifier hs-var">W64#</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679537062"><span class="hs-identifier hs-var">lo</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-135"></span><span>
</span><span id="line-136"></span><span class="annot"><a href="Data.Typeable.Internal.html#tyConKindArgs"><span class="hs-identifier hs-type">tyConKindArgs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int"><span class="hs-identifier hs-type">Int</span></a></span><span>
</span><span id="line-137"></span><span id="tyConKindArgs"><span class="annot"><span class="annottext">tyConKindArgs :: TyCon -&gt; KindBndr
</span><a href="Data.Typeable.Internal.html#tyConKindArgs"><span class="hs-identifier hs-var hs-var">tyConKindArgs</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Module
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TrName
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537060"><span class="annot"><span class="annottext">Int#
</span><a href="#local-6989586621679537060"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Int# -&gt; KindBndr
</span><a href="../../ghc-prim/src/GHC.Types.html#I%23"><span class="hs-identifier hs-var">I#</span></a></span><span> </span><span class="annot"><span class="annottext">Int#
</span><a href="#local-6989586621679537060"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-138"></span><span>
</span><span id="line-139"></span><span class="annot"><a href="Data.Typeable.Internal.html#tyConKindRep"><span class="hs-identifier hs-type">tyConKindRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span>
</span><span id="line-140"></span><span id="tyConKindRep"><span class="annot"><span class="annottext">tyConKindRep :: TyCon -&gt; KindRep
</span><a href="Data.Typeable.Internal.html#tyConKindRep"><span class="hs-identifier hs-var hs-var">tyConKindRep</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Module
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TrName
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Int#
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537059"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537059"><span class="hs-identifier hs-var">k</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537059"><span class="hs-identifier hs-var">k</span></a></span><span>
</span><span id="line-141"></span><span>
</span><span id="line-142"></span><span class="hs-comment">-- | Helper to fully evaluate 'TyCon' for use as @NFData(rnf)@ implementation</span><span>
</span><span id="line-143"></span><span class="hs-comment">--</span><span>
</span><span id="line-144"></span><span class="hs-comment">-- @since 4.8.0.0</span><span>
</span><span id="line-145"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfModule"><span class="hs-identifier hs-type">rnfModule</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-146"></span><span id="rnfModule"><span class="annot"><span class="annottext">rnfModule :: Module -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfModule"><span class="hs-identifier hs-var hs-var">rnfModule</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier hs-type">Module</span></a></span><span> </span><span id="local-6989586621679537058"><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537058"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span id="local-6989586621679537057"><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537057"><span class="hs-identifier hs-var">m</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrName -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfTrName"><span class="hs-identifier hs-var">rnfTrName</span></a></span><span> </span><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537058"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">() -&gt; () -&gt; ()
</span><a href="../../ghc-prim/src/GHC.Prim.html#seq"><span class="hs-operator hs-var">`seq`</span></a></span><span> </span><span class="annot"><span class="annottext">TrName -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfTrName"><span class="hs-identifier hs-var">rnfTrName</span></a></span><span> </span><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537057"><span class="hs-identifier hs-var">m</span></a></span><span>
</span><span id="line-147"></span><span>
</span><span id="line-148"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfTrName"><span class="hs-identifier hs-type">rnfTrName</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TrName"><span class="hs-identifier hs-type">TrName</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-149"></span><span id="rnfTrName"><span class="annot"><span class="annottext">rnfTrName :: TrName -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfTrName"><span class="hs-identifier hs-var hs-var">rnfTrName</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TrNameS"><span class="hs-identifier hs-type">TrNameS</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-150"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfTrName"><span class="hs-identifier hs-var">rnfTrName</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TrNameD"><span class="hs-identifier hs-type">TrNameD</span></a></span><span> </span><span id="local-6989586621679537055"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679537055"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfString"><span class="hs-identifier hs-var">rnfString</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679537055"><span class="hs-identifier hs-var">n</span></a></span><span>
</span><span id="line-151"></span><span>
</span><span id="line-152"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-type">rnfKindRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-153"></span><span id="rnfKindRep"><span class="annot"><span class="annottext">rnfKindRep :: KindRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var hs-var">rnfKindRep</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTyConApp"><span class="hs-identifier hs-type">KindRepTyConApp</span></a></span><span> </span><span id="local-6989586621679537052"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679537052"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621679537051"><span class="annot"><span class="annottext">[KindRep]
</span><a href="#local-6989586621679537051"><span class="hs-identifier hs-var">args</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfTyCon"><span class="hs-identifier hs-var">rnfTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679537052"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">() -&gt; () -&gt; ()
</span><a href="../../ghc-prim/src/GHC.Prim.html#seq"><span class="hs-operator hs-var">`seq`</span></a></span><span> </span><span class="annot"><span class="annottext">(KindRep -&gt; ()) -&gt; [KindRep] -&gt; ()
forall a. (a -&gt; ()) -&gt; [a] -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfList"><span class="hs-identifier hs-var">rnfList</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="annot"><span class="annottext">[KindRep]
</span><a href="#local-6989586621679537051"><span class="hs-identifier hs-var">args</span></a></span><span>
</span><span id="line-154"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepVar"><span class="hs-identifier hs-type">KindRepVar</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-155"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepApp"><span class="hs-identifier hs-type">KindRepApp</span></a></span><span> </span><span id="local-6989586621679537049"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537049"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679537048"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537048"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537049"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">() -&gt; () -&gt; ()
</span><a href="../../ghc-prim/src/GHC.Prim.html#seq"><span class="hs-operator hs-var">`seq`</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537048"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-156"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepFun"><span class="hs-identifier hs-type">KindRepFun</span></a></span><span> </span><span id="local-6989586621679537047"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537047"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679537046"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537046"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537047"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">() -&gt; () -&gt; ()
</span><a href="../../ghc-prim/src/GHC.Prim.html#seq"><span class="hs-operator hs-var">`seq`</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537046"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-157"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTYPE"><span class="hs-identifier hs-type">KindRepTYPE</span></a></span><span> </span><span id="local-6989586621679537045"><span class="annot"><span class="annottext">RuntimeRep
</span><a href="#local-6989586621679537045"><span class="hs-identifier hs-var">rr</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RuntimeRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfRuntimeRep"><span class="hs-identifier hs-var">rnfRuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="#local-6989586621679537045"><span class="hs-identifier hs-var">rr</span></a></span><span>
</span><span id="line-158"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTypeLitS"><span class="hs-identifier hs-type">KindRepTypeLitS</span></a></span><span> </span><span class="annot"><span class="annottext">TypeLitSort
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-159"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTypeLitD"><span class="hs-identifier hs-type">KindRepTypeLitD</span></a></span><span> </span><span class="annot"><span class="annottext">TypeLitSort
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537043"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679537043"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfString"><span class="hs-identifier hs-var">rnfString</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679537043"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-160"></span><span>
</span><span id="line-161"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfRuntimeRep"><span class="hs-identifier hs-type">rnfRuntimeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-162"></span><span id="rnfRuntimeRep"><span class="annot"><span class="annottext">rnfRuntimeRep :: RuntimeRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfRuntimeRep"><span class="hs-identifier hs-var hs-var">rnfRuntimeRep</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecRep"><span class="hs-identifier hs-type">VecRep</span></a></span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="annottext">VecCount
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="annottext">VecElem
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-163"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfRuntimeRep"><span class="hs-identifier hs-var">rnfRuntimeRep</span></a></span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="annottext">RuntimeRep
</span><span class="hs-identifier">_</span></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-164"></span><span>
</span><span id="line-165"></span><span id="local-6989586621679537594"><span class="annot"><a href="Data.Typeable.Internal.html#rnfList"><span class="hs-identifier hs-type">rnfList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537594"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679537594"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span><span>
</span><span id="line-166"></span><span id="rnfList"><span class="annot"><span class="annottext">rnfList :: forall a. (a -&gt; ()) -&gt; [a] -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfList"><span class="hs-identifier hs-var hs-var">rnfList</span></a></span></span><span> </span><span class="annot"><span class="annottext">a -&gt; ()
</span><span class="hs-identifier">_</span></span><span>     </span><span class="hs-special">[</span><span class="hs-special">]</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-167"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfList"><span class="hs-identifier hs-var">rnfList</span></a></span><span> </span><span id="local-6989586621679537042"><span class="annot"><span class="annottext">a -&gt; ()
</span><a href="#local-6989586621679537042"><span class="hs-identifier hs-var">force</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537041"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679537041"><span class="hs-identifier hs-var">x</span></a></span></span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#%3A"><span class="hs-glyph hs-type">:</span></a></span><span id="local-6989586621679537040"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679537040"><span class="hs-identifier hs-var">xs</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">a -&gt; ()
</span><a href="#local-6989586621679537042"><span class="hs-identifier hs-var">force</span></a></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679537041"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">() -&gt; () -&gt; ()
</span><a href="../../ghc-prim/src/GHC.Prim.html#seq"><span class="hs-operator hs-var">`seq`</span></a></span><span> </span><span class="annot"><span class="annottext">(a -&gt; ()) -&gt; [a] -&gt; ()
forall a. (a -&gt; ()) -&gt; [a] -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfList"><span class="hs-identifier hs-var">rnfList</span></a></span><span> </span><span class="annot"><span class="annottext">a -&gt; ()
</span><a href="#local-6989586621679537042"><span class="hs-identifier hs-var">force</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679537040"><span class="hs-identifier hs-var">xs</span></a></span><span>
</span><span id="line-168"></span><span>
</span><span id="line-169"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfString"><span class="hs-identifier hs-type">rnfString</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Char"><span class="hs-identifier hs-type">Char</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-170"></span><span id="rnfString"><span class="annot"><span class="annottext">rnfString :: String -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfString"><span class="hs-identifier hs-var hs-var">rnfString</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Char -&gt; ()) -&gt; String -&gt; ()
forall a. (a -&gt; ()) -&gt; [a] -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfList"><span class="hs-identifier hs-var">rnfList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; () -&gt; ()
</span><a href="../../ghc-prim/src/GHC.Prim.html#seq"><span class="hs-operator hs-var">`seq`</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-171"></span><span>
</span><span id="line-172"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfTyCon"><span class="hs-identifier hs-type">rnfTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-173"></span><span id="rnfTyCon"><span class="annot"><span class="annottext">rnfTyCon :: TyCon -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfTyCon"><span class="hs-identifier hs-var hs-var">rnfTyCon</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537039"><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621679537039"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621679537038"><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537038"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">Int#
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679537037"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537037"><span class="hs-identifier hs-var">k</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Module -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfModule"><span class="hs-identifier hs-var">rnfModule</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621679537039"><span class="hs-identifier hs-var">m</span></a></span><span> </span><span class="annot"><span class="annottext">() -&gt; () -&gt; ()
</span><a href="../../ghc-prim/src/GHC.Prim.html#seq"><span class="hs-operator hs-var">`seq`</span></a></span><span> </span><span class="annot"><span class="annottext">TrName -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfTrName"><span class="hs-identifier hs-var">rnfTrName</span></a></span><span> </span><span class="annot"><span class="annottext">TrName
</span><a href="#local-6989586621679537038"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">() -&gt; () -&gt; ()
</span><a href="../../ghc-prim/src/GHC.Prim.html#seq"><span class="hs-operator hs-var">`seq`</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfKindRep"><span class="hs-identifier hs-var">rnfKindRep</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679537037"><span class="hs-identifier hs-var">k</span></a></span><span>
</span><span id="line-174"></span><span>
</span><span id="line-175"></span><span>
</span><span id="line-176"></span><span class="hs-comment">{- *********************************************************************
*                                                                      *
                The TypeRep type
*                                                                      *
********************************************************************* -}</span><span>
</span><span id="line-181"></span><span>
</span><span id="line-182"></span><span class="hs-comment">-- | A concrete representation of a (monomorphic) type.</span><span>
</span><span id="line-183"></span><span class="hs-comment">-- 'TypeRep' supports reasonably efficient equality.</span><span>
</span><span id="line-184"></span><span id="local-6989586621679537036"><span class="hs-keyword">type</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537036"><span class="hs-identifier hs-type">k</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span></span><span>
</span><span id="line-185"></span><span class="hs-keyword">data</span><span> </span><span id="TypeRep"><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-var">TypeRep</span></a></span></span><span> </span><span id="local-6989586621679537035"><span class="annot"><a href="#local-6989586621679537035"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-186"></span><span>    </span><span class="hs-comment">-- The TypeRep of Type. See Note [Kind caching], Wrinkle 2</span><span>
</span><span id="line-187"></span><span>    </span><span id="TrType"><span class="annot"><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-188"></span><span>    </span><span id="local-6989586621679537591"><span id="local-6989586621679537592"><span id="TrTyCon"><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-var">TrTyCon</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">{</span><span> </span><span class="hs-comment">-- See Note [TypeRep fingerprints]</span><span>
</span><span id="line-189"></span><span>                 </span><span id="trTyConFingerprint"><span class="annot"><span class="annottext">forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#trTyConFingerprint"><span class="hs-identifier hs-var hs-var">trTyConFingerprint</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-190"></span><span>
</span><span id="line-191"></span><span>                 </span><span class="hs-comment">-- The TypeRep represents the application of trTyCon</span><span>
</span><span id="line-192"></span><span>                 </span><span class="hs-comment">-- to the kind arguments trKindVars. So for</span><span>
</span><span id="line-193"></span><span>                 </span><span class="hs-comment">-- 'Just :: Bool -&gt; Maybe Bool, the trTyCon will be</span><span>
</span><span id="line-194"></span><span>                 </span><span class="hs-comment">-- 'Just and the trKindVars will be [Bool].</span><span>
</span><span id="line-195"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trTyCon"><span class="annot"><span class="annottext">forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#trTyCon"><span class="hs-identifier hs-var hs-var">trTyCon</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-196"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trKindVars"><span class="annot"><span class="annottext">forall k (a :: k). TypeRep a -&gt; [SomeTypeRep]
</span><a href="Data.Typeable.Internal.html#trKindVars"><span class="hs-identifier hs-var hs-var">trKindVars</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-197"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trTyConKind"><span class="annot"><span class="annottext">forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#trTyConKind"><span class="hs-identifier hs-var hs-var">trTyConKind</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537592"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>  </span><span class="hs-comment">-- See Note [Kind caching]</span><span>
</span><span id="line-198"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537591"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537592"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span></span></span><span>
</span><span id="line-199"></span><span>
</span><span id="line-200"></span><span>    </span><span class="hs-comment">-- | Invariant: Saturated arrow types (e.g. things of the form @a -&gt; b@)</span><span>
</span><span id="line-201"></span><span>    </span><span class="hs-comment">-- are represented with @'TrFun' a b@, not @TrApp (TrApp funTyCon a) b@.</span><span>
</span><span id="line-202"></span><span>    </span><span id="TrApp"><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-var">TrApp</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537027"><span class="annot"><a href="#local-6989586621679537027"><span class="hs-identifier hs-type">k1</span></a></span></span><span> </span><span id="local-6989586621679537580"><span class="annot"><a href="#local-6989586621679537580"><span class="hs-identifier hs-type">k2</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537026"><span class="annot"><a href="#local-6989586621679537026"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537027"><span class="hs-identifier hs-type">k1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537580"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537025"><span class="annot"><a href="#local-6989586621679537025"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537027"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span>
</span><span id="line-203"></span><span>               </span><span class="hs-special">{</span><span> </span><span class="hs-comment">-- See Note [TypeRep fingerprints]</span><span>
</span><span id="line-204"></span><span>                 </span><span id="trAppFingerprint"><span class="annot"><span class="annottext">forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#trAppFingerprint"><span class="hs-identifier hs-var hs-var">trAppFingerprint</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-205"></span><span>
</span><span id="line-206"></span><span>                 </span><span class="hs-comment">-- The TypeRep represents the application of trAppFun</span><span>
</span><span id="line-207"></span><span>                 </span><span class="hs-comment">-- to trAppArg. For Maybe Int, the trAppFun will be Maybe</span><span>
</span><span id="line-208"></span><span>                 </span><span class="hs-comment">-- and the trAppArg will be Int.</span><span>
</span><span id="line-209"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trAppFun"><span class="annot"><span class="annottext">forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r1
</span><a href="Data.Typeable.Internal.html#trAppFun"><span class="hs-identifier hs-var hs-var">trAppFun</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537026"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537027"><span class="hs-identifier hs-type">k1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537580"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-210"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trAppArg"><span class="annot"><span class="annottext">forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r2
</span><a href="Data.Typeable.Internal.html#trAppArg"><span class="hs-identifier hs-var hs-var">trAppArg</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537025"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537027"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-211"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trAppKind"><span class="annot"><span class="annottext">forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep k2
</span><a href="Data.Typeable.Internal.html#trAppKind"><span class="hs-identifier hs-var hs-var">trAppKind</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537580"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>   </span><span class="hs-comment">-- See Note [Kind caching]</span><span>
</span><span id="line-212"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537026"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537025"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-213"></span><span>
</span><span id="line-214"></span><span>    </span><span class="hs-comment">-- | @TrFun fpr m a b@ represents a function type @a # m -&gt; b@. We use this for</span><span>
</span><span id="line-215"></span><span>    </span><span class="hs-comment">-- the sake of efficiency as functions are quite ubiquitous.</span><span>
</span><span id="line-216"></span><span>    </span><span id="TrFun"><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-var">TrFun</span></a></span></span><span>   </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537001"><span class="annot"><a href="#local-6989586621679537001"><span class="hs-identifier hs-type">m</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Multiplicity"><span class="hs-identifier hs-type">Multiplicity</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537000"><span class="annot"><a href="#local-6989586621679537000"><span class="hs-identifier hs-type">r1</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536999"><span class="annot"><a href="#local-6989586621679536999"><span class="hs-identifier hs-type">r2</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-217"></span><span>                      </span><span class="hs-special">(</span><span id="local-6989586621679536998"><span class="annot"><a href="#local-6989586621679536998"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537000"><span class="hs-identifier hs-type">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536997"><span class="annot"><a href="#local-6989586621679536997"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536999"><span class="hs-identifier hs-type">r2</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span>
</span><span id="line-218"></span><span>               </span><span class="hs-special">{</span><span> </span><span class="hs-comment">-- See Note [TypeRep fingerprints]</span><span>
</span><span id="line-219"></span><span>                 </span><span id="trFunFingerprint"><span class="annot"><span class="annottext">forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#trFunFingerprint"><span class="hs-identifier hs-var hs-var">trFunFingerprint</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-pragma">{-# UNPACK</span><span> </span><span class="hs-pragma">#-}</span><span> </span><span class="hs-glyph">!</span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-220"></span><span>
</span><span id="line-221"></span><span>                 </span><span class="hs-comment">-- The TypeRep represents a function from trFunArg to</span><span>
</span><span id="line-222"></span><span>                 </span><span class="hs-comment">-- trFunRes.</span><span>
</span><span id="line-223"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trFunMul"><span class="annot"><span class="annottext">forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep m
</span><a href="Data.Typeable.Internal.html#trFunMul"><span class="hs-identifier hs-var hs-var">trFunMul</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537001"><span class="hs-identifier hs-type">m</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-224"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trFunArg"><span class="annot"><span class="annottext">forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#trFunArg"><span class="hs-identifier hs-var hs-var">trFunArg</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536998"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-225"></span><span>               </span><span class="hs-special">,</span><span> </span><span id="trFunRes"><span class="annot"><span class="annottext">forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep b
</span><a href="Data.Typeable.Internal.html#trFunRes"><span class="hs-identifier hs-var hs-var">trFunRes</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536997"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-226"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#FUN"><span class="hs-identifier hs-type">FUN</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537001"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536998"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536997"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-227"></span><span>
</span><span id="line-228"></span><span class="hs-comment">{- Note [TypeRep fingerprints]
   ~~~~~~~~~~~~~~~~~~~~~~~~~~~
We store a Fingerprint of each TypeRep in its constructor. This allows
us to test whether two TypeReps are equal in constant time, rather than
having to walk their full structures.
-}</span><span>
</span><span id="line-234"></span><span>
</span><span id="line-235"></span><span class="hs-comment">{- Note [Kind caching]
   ~~~~~~~~~~~~~~~~~~~

We cache the kind of the TypeRep in each TrTyCon and TrApp constructor.
This is necessary to ensure that typeRepKind (which is used, at least, in
deserialization and dynApply) is cheap. There are two reasons for this:

1. Calculating the kind of a nest of type applications, such as

  F X Y Z W   (App (App (App (App F X) Y) Z) W)

is linear in the depth, which is already a bit pricy. In deserialization,
we build up such a nest from the inside out, so without caching, that ends
up taking quadratic time, and calculating the KindRep of the constructor,
F, a linear number of times. See #14254.

2. Calculating the kind of a type constructor, in instantiateTypeRep,
requires building (allocating) a TypeRep for the kind &quot;from scratch&quot;.
This can get pricy. When combined with point (1), we can end up with
a large amount of extra allocation deserializing very deep nests.
See #14337.

It is quite possible to speed up deserialization by structuring that process
very carefully. Unfortunately, that doesn't help dynApply or anything else
that may use typeRepKind. Since caching the kind isn't terribly expensive, it
seems better to just do that and solve all the potential problems at once.

There are two things we need to be careful about when caching kinds.

Wrinkle 1:

We want to do it eagerly. Suppose we have

  tf :: TypeRep (f :: j -&gt; k)
  ta :: TypeRep (a :: j)

Then the cached kind of App tf ta should be eagerly evaluated to k, rather
than being stored as a thunk that will strip the (j -&gt;) off of j -&gt; k if
and when it is forced.

Wrinkle 2:

We need to be able to represent TypeRep Type. This is a bit tricky because
typeRepKind (typeRep @Type) = typeRep @Type, so if we actually cache the
typerep of the kind of Type, we will have a loop. One simple way to do this
is to make the cached kind fields lazy and allow TypeRep Type to be cyclical.

But we *do not* want TypeReps to have cyclical structure! Most importantly,
a cyclical structure cannot be stored in a compact region. Secondarily,
using :force in GHCi on a cyclical structure will lead to non-termination.

To avoid this trouble, we use a separate constructor for TypeRep Type.
mkTrApp is responsible for recognizing that TYPE is being applied to
'LiftedRep and produce trType; other functions must recognize that TrType
represents an application.
-}</span><span>
</span><span id="line-291"></span><span>
</span><span id="line-292"></span><span class="hs-comment">-- Compare keys for equality</span><span>
</span><span id="line-293"></span><span>
</span><span id="line-294"></span><span class="hs-comment">-- | @since 2.01</span><span>
</span><span id="line-295"></span><span id="local-6989586621679537521"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679536966"><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Eq"><span class="hs-identifier hs-type">Eq</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537521"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-296"></span><span>  </span><span class="annot"><span class="annottext">TypeRep a
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679536964"><span class="annot"><span class="annottext">== :: TypeRep a -&gt; TypeRep a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../ghc-prim/src/GHC.Types.html#True"><span class="hs-identifier hs-var">True</span></a></span><span>
</span><span id="line-297"></span><span>  </span><span class="hs-pragma">{-# INLINABLE</span><span> </span><span class="hs-pragma">(</span><span class="hs-pragma">==</span><span class="hs-pragma">)</span><span> </span><span class="hs-pragma">#-}</span></span><span>
</span><span id="line-298"></span><span>
</span><span id="line-299"></span><span class="hs-keyword">instance</span><span> </span><span class="annot"><a href="Data.Type.Equality.html#TestEquality"><span class="hs-identifier hs-type">TestEquality</span></a></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-300"></span><span>  </span><span id="local-6989586621679536960"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536960"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536959"><span class="annot"><span class="annottext">testEquality :: forall (a :: k) (b :: k). TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~: b)
</span><a href="Data.Type.Equality.html#testEquality"><span class="hs-operator hs-var hs-var hs-var hs-var">`testEquality`</span></a></span></span><span> </span><span id="local-6989586621679536957"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536957"><span class="hs-identifier hs-var">b</span></a></span></span><span>
</span><span id="line-301"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">a :~~: b
</span><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier hs-var">HRefl</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-identifier hs-var">eqTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536960"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536957"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-302"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a :~: a) -&gt; Maybe (a :~: a)
forall a. a -&gt; Maybe a
</span><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="annot"><span class="annottext">a :~: a
forall {k} (a :: k). a :~: a
</span><a href="Data.Type.Equality.html#Refl"><span class="hs-identifier hs-var">Refl</span></a></span><span>
</span><span id="line-303"></span><span>    </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>
</span><span id="line-304"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe (a :~: b)
forall a. Maybe a
</span><a href="GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-305"></span><span>  </span><span class="hs-pragma">{-# INLINEABLE</span><span> </span><span class="annot"><a href="Data.Type.Equality.html#testEquality"><span class="hs-pragma hs-type">testEquality</span></a></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-306"></span><span>
</span><span id="line-307"></span><span class="hs-comment">-- | @since 4.4.0.0</span><span>
</span><span id="line-308"></span><span id="local-6989586621679537501"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679536938"><span id="local-6989586621679536940"><span id="local-6989586621679536942"><span id="local-6989586621679536944"><span id="local-6989586621679536946"><span id="local-6989586621679536948"><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Ord"><span class="hs-identifier hs-type">Ord</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537501"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span></span></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-309"></span><span>  </span><span id="local-6989586621679536936"><span class="annot"><span class="annottext">compare :: TypeRep a -&gt; TypeRep a -&gt; Ordering
</span><a href="../../ghc-prim/src/GHC.Classes.html#compare"><span class="hs-identifier hs-var hs-var hs-var hs-var">compare</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Ordering
</span><a href="../../ghc-prim/src/GHC.Types.html#EQ"><span class="hs-identifier hs-var">EQ</span></a></span><span>
</span><span id="line-310"></span><span>  </span><span class="hs-pragma">{-# INLINABLE</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#compare"><span class="hs-pragma hs-type">compare</span></a></span><span> </span><span class="hs-pragma">#-}</span></span><span>
</span><span id="line-311"></span><span>
</span><span id="line-312"></span><span class="hs-comment">-- | A non-indexed type representation.</span><span>
</span><span id="line-313"></span><span class="hs-keyword">data</span><span> </span><span id="SomeTypeRep"><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-314"></span><span>    </span><span id="SomeTypeRep"><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679536934"><span class="annot"><a href="#local-6989586621679536934"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536933"><span class="annot"><a href="#local-6989586621679536933"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536934"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-glyph">!</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536933"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">%</span><span class="hs-number">1</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span>
</span><span id="line-315"></span><span>
</span><span id="line-316"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679536930"><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Eq"><span class="hs-identifier hs-type">Eq</span></a></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-317"></span><span>  </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536929"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536929"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536928"><span class="annot"><span class="annottext">== :: SomeTypeRep -&gt; SomeTypeRep -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var hs-var hs-var hs-var">==</span></a></span></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536927"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536927"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-318"></span><span>      </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536929"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep a -&gt; Maybe (a :~~: a)
forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-operator hs-var">`eqTypeRep`</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536927"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-319"></span><span>          </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">a :~~: a
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../ghc-prim/src/GHC.Types.html#True"><span class="hs-identifier hs-var">True</span></a></span><span>
</span><span id="line-320"></span><span>          </span><span class="annot"><span class="annottext">Maybe (a :~~: a)
</span><a href="GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../ghc-prim/src/GHC.Types.html#False"><span class="hs-identifier hs-var">False</span></a></span><span>
</span><span id="line-321"></span><span>
</span><span id="line-322"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679536912"><span id="local-6989586621679536914"><span id="local-6989586621679536916"><span id="local-6989586621679536918"><span id="local-6989586621679536920"><span id="local-6989586621679536922"><span class="annot"><a href="../../ghc-prim/src/GHC.Classes.html#Ord"><span class="hs-identifier hs-type">Ord</span></a></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span></span></span></span></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-323"></span><span>  </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536911"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536911"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536910"><span class="annot"><span class="annottext">compare :: SomeTypeRep -&gt; SomeTypeRep -&gt; Ordering
</span><a href="#local-6989586621679536910"><span class="hs-operator hs-var hs-var hs-var hs-var">`compare`</span></a></span></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536907"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536907"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-324"></span><span>    </span><span class="annot"><span class="annottext">TypeRep a -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536911"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">Fingerprint -&gt; Fingerprint -&gt; Ordering
forall a. Ord a =&gt; a -&gt; a -&gt; Ordering
</span><a href="../../ghc-prim/src/GHC.Classes.html#compare"><span class="hs-operator hs-var">`compare`</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536907"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-325"></span><span>
</span><span id="line-326"></span><span class="hs-comment">-- | The function type constructor.</span><span>
</span><span id="line-327"></span><span class="hs-comment">--</span><span>
</span><span id="line-328"></span><span class="hs-comment">-- For instance,</span><span>
</span><span id="line-329"></span><span class="hs-comment">--</span><span>
</span><span id="line-330"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-331"></span><span class="hs-comment">-- typeRep \@(Int -&gt; Char) === Fun (typeRep \@Int) (typeRep \@Char)</span><span>
</span><span id="line-332"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-333"></span><span class="hs-comment">--</span><span>
</span><span id="line-334"></span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Fun"><span class="hs-identifier hs-type">Fun</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537492"><span class="annot"><a href="#local-6989586621679537492"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537489"><span class="annot"><a href="#local-6989586621679537489"><span class="hs-identifier hs-type">fun</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537492"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-335"></span><span>            </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537491"><span class="annot"><a href="#local-6989586621679537491"><span class="hs-identifier hs-type">r1</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537490"><span class="annot"><a href="#local-6989586621679537490"><span class="hs-identifier hs-type">r2</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-336"></span><span>                      </span><span class="hs-special">(</span><span id="local-6989586621679537488"><span class="annot"><a href="#local-6989586621679537488"><span class="hs-identifier hs-type">arg</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537491"><span class="hs-identifier hs-type">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537487"><span class="annot"><a href="#local-6989586621679537487"><span class="hs-identifier hs-type">res</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537490"><span class="hs-identifier hs-type">r2</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span>
</span><span id="line-337"></span><span>               </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537492"><span class="hs-identifier hs-type">k</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#~"><span class="hs-operator hs-type">~</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="#local-6989586621679537489"><span class="hs-identifier hs-type">fun</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#~~"><span class="hs-operator hs-type">~~</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537488"><span class="hs-identifier hs-type">arg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537487"><span class="hs-identifier hs-type">res</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-338"></span><span>            </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537488"><span class="hs-identifier hs-type">arg</span></a></span><span>
</span><span id="line-339"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537487"><span class="hs-identifier hs-type">res</span></a></span><span>
</span><span id="line-340"></span><span>            </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537489"><span class="hs-identifier hs-type">fun</span></a></span><span>
</span><span id="line-341"></span><span class="hs-keyword">pattern</span><span> </span><span id="%24mFun"><span id="%24bFun"><span id="Fun"><span class="annot"><span class="annottext">$mFun :: forall {r} {k} {fun :: k}.
TypeRep fun
-&gt; (forall {arg} {res}.
    (k ~ *, fun ~~ (arg -&gt; res)) =&gt;
    TypeRep arg -&gt; TypeRep res -&gt; r)
-&gt; (Void# -&gt; r)
-&gt; r
$bFun :: forall k (fun :: k) arg res.
(k ~ *, fun ~~ (arg -&gt; res)) =&gt;
TypeRep arg -&gt; TypeRep res -&gt; TypeRep fun
</span><a href="Data.Typeable.Internal.html#%24mFun"><span class="hs-identifier hs-var hs-var hs-var hs-var">Fun</span></a></span></span></span></span><span> </span><span class="annot"><a href="#local-6989586621679536904"><span class="hs-identifier hs-type">arg</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536903"><span class="hs-identifier hs-type">res</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><a href="Data.Typeable.Internal.html#trFunArg"><span class="hs-identifier hs-var">trFunArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536904"><span class="annot"><a href="#local-6989586621679536904"><span class="hs-identifier hs-var">arg</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#trFunRes"><span class="hs-identifier hs-var">trFunRes</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536903"><span class="annot"><a href="#local-6989586621679536903"><span class="hs-identifier hs-var">res</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#trFunMul"><span class="hs-identifier hs-var">trFunMul</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-identifier hs-type">eqTypeRep</span></a></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#trMany"><span class="hs-identifier hs-type">trMany</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier hs-type">HRefl</span></a></span><span class="hs-special">)</span><span class="hs-special">}</span><span>
</span><span id="line-342"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Fun"><span class="hs-identifier hs-var">Fun</span></a></span><span> </span><span id="local-6989586621679536891"><span class="annot"><span class="annottext">TypeRep arg
</span><a href="#local-6989586621679536891"><span class="hs-identifier hs-var">arg</span></a></span></span><span> </span><span id="local-6989586621679536890"><span class="annot"><span class="annottext">TypeRep res
</span><a href="#local-6989586621679536890"><span class="hs-identifier hs-var">res</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many -&gt; TypeRep arg -&gt; TypeRep res -&gt; TypeRep (arg -&gt; res)
forall (m :: Multiplicity) a b.
TypeRep m -&gt; TypeRep a -&gt; TypeRep b -&gt; TypeRep (a %m -&gt; b)
</span><a href="Data.Typeable.Internal.html#mkTrFun"><span class="hs-identifier hs-var">mkTrFun</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many
</span><a href="Data.Typeable.Internal.html#trMany"><span class="hs-identifier hs-var">trMany</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep arg
</span><a href="#local-6989586621679536891"><span class="hs-identifier hs-var">arg</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep res
</span><a href="#local-6989586621679536890"><span class="hs-identifier hs-var">res</span></a></span><span>
</span><span id="line-343"></span><span>
</span><span id="line-344"></span><span class="hs-comment">-- | Observe the 'Fingerprint' of a type representation</span><span>
</span><span id="line-345"></span><span class="hs-comment">--</span><span>
</span><span id="line-346"></span><span class="hs-comment">-- @since 4.8.0.0</span><span>
</span><span id="line-347"></span><span id="local-6989586621679536889"><span class="annot"><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-type">typeRepFingerprint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536889"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span></span><span>
</span><span id="line-348"></span><span id="typeRepFingerprint"><span class="annot"><span class="annottext">typeRepFingerprint :: forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var hs-var">typeRepFingerprint</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="Data.Typeable.Internal.html#fpTYPELiftedRep"><span class="hs-identifier hs-var">fpTYPELiftedRep</span></a></span><span>
</span><span id="line-349"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trTyConFingerprint :: forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#trTyConFingerprint"><span class="hs-identifier hs-var">trTyConFingerprint</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536885"><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536885"><span class="hs-identifier hs-var">fpr</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536885"><span class="hs-identifier hs-var">fpr</span></a></span><span>
</span><span id="line-350"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppFingerprint :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#trAppFingerprint"><span class="hs-identifier hs-var">trAppFingerprint</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536883"><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536883"><span class="hs-identifier hs-var">fpr</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536883"><span class="hs-identifier hs-var">fpr</span></a></span><span>
</span><span id="line-351"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trFunFingerprint :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#trFunFingerprint"><span class="hs-identifier hs-var">trFunFingerprint</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536880"><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536880"><span class="hs-identifier hs-var">fpr</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536880"><span class="hs-identifier hs-var">fpr</span></a></span><span>
</span><span id="line-352"></span><span>
</span><span id="line-353"></span><span class="hs-comment">-- For compiler use</span><span>
</span><span id="line-354"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrType"><span class="hs-identifier hs-type">mkTrType</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-355"></span><span id="mkTrType"><span class="annot"><span class="annottext">mkTrType :: TypeRep (*)
</span><a href="Data.Typeable.Internal.html#mkTrType"><span class="hs-identifier hs-var hs-var">mkTrType</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (*)
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span>
</span><span id="line-356"></span><span>
</span><span id="line-357"></span><span class="hs-comment">-- | Construct a representation for a type constructor</span><span>
</span><span id="line-358"></span><span class="hs-comment">-- applied at a monomorphic kind.</span><span>
</span><span id="line-359"></span><span class="hs-comment">--</span><span>
</span><span id="line-360"></span><span class="hs-comment">-- Note that this is unsafe as it allows you to construct</span><span>
</span><span id="line-361"></span><span class="hs-comment">-- ill-kinded types.</span><span>
</span><span id="line-362"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrCon"><span class="hs-identifier hs-type">mkTrCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537465"><span class="annot"><a href="#local-6989586621679537465"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537464"><span class="annot"><a href="#local-6989586621679537464"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537465"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537464"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-363"></span><span id="mkTrCon"><span class="annot"><span class="annottext">mkTrCon :: forall k (a :: k). TyCon -&gt; [SomeTypeRep] -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#mkTrCon"><span class="hs-identifier hs-var hs-var">mkTrCon</span></a></span></span><span> </span><span id="local-6989586621679536879"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536879"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621679536878"><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536878"><span class="hs-identifier hs-var">kind_vars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrTyCon :: forall k (a :: k).
Fingerprint -&gt; TyCon -&gt; [SomeTypeRep] -&gt; TypeRep k -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span>
</span><span id="line-364"></span><span>    </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">trTyConFingerprint :: Fingerprint
</span><a href="Data.Typeable.Internal.html#trTyConFingerprint"><span class="hs-identifier hs-var">trTyConFingerprint</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536877"><span class="hs-identifier hs-var">fpr</span></a></span><span>
</span><span id="line-365"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trTyCon :: TyCon
</span><a href="Data.Typeable.Internal.html#trTyCon"><span class="hs-identifier hs-var">trTyCon</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536879"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-366"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trKindVars :: [SomeTypeRep]
</span><a href="Data.Typeable.Internal.html#trKindVars"><span class="hs-identifier hs-var">trKindVars</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536878"><span class="hs-identifier hs-var">kind_vars</span></a></span><span>
</span><span id="line-367"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trTyConKind :: TypeRep k
</span><a href="Data.Typeable.Internal.html#trTyConKind"><span class="hs-identifier hs-var">trTyConKind</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep k
</span><a href="#local-6989586621679536876"><span class="hs-identifier hs-var">kind</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-368"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-369"></span><span>    </span><span id="local-6989586621679536875"><span class="annot"><span class="annottext">fpr_tc :: Fingerprint
</span><a href="#local-6989586621679536875"><span class="hs-identifier hs-var hs-var">fpr_tc</span></a></span></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#tyConFingerprint"><span class="hs-identifier hs-var">tyConFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536879"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-370"></span><span>    </span><span id="local-6989586621679536874"><span class="annot"><span class="annottext">fpr_kvs :: [Fingerprint]
</span><a href="#local-6989586621679536874"><span class="hs-identifier hs-var hs-var">fpr_kvs</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(SomeTypeRep -&gt; Fingerprint) -&gt; [SomeTypeRep] -&gt; [Fingerprint]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">SomeTypeRep -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#someTypeRepFingerprint"><span class="hs-identifier hs-var">someTypeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536878"><span class="hs-identifier hs-var">kind_vars</span></a></span><span>
</span><span id="line-371"></span><span>    </span><span id="local-6989586621679536877"><span class="annot"><span class="annottext">fpr :: Fingerprint
</span><a href="#local-6989586621679536877"><span class="hs-identifier hs-var hs-var">fpr</span></a></span></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Fingerprint] -&gt; Fingerprint
</span><a href="GHC.Fingerprint.html#fingerprintFingerprints"><span class="hs-identifier hs-var">fingerprintFingerprints</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536875"><span class="hs-identifier hs-var">fpr_tc</span></a></span><span class="annot"><span class="annottext">Fingerprint -&gt; [Fingerprint] -&gt; [Fingerprint]
forall a. a -&gt; [a] -&gt; [a]
</span><a href="../../ghc-prim/src/GHC.Types.html#%3A"><span class="hs-glyph hs-var">:</span></a></span><span class="annot"><span class="annottext">[Fingerprint]
</span><a href="#local-6989586621679536874"><span class="hs-identifier hs-var">fpr_kvs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-372"></span><span>    </span><span id="local-6989586621679536876"><span class="annot"><span class="annottext">kind :: TypeRep k
</span><a href="#local-6989586621679536876"><span class="hs-identifier hs-var hs-var">kind</span></a></span></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SomeTypeRep -&gt; TypeRep k
forall {k} (a :: k). SomeTypeRep -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#unsafeCoerceRep"><span class="hs-identifier hs-var">unsafeCoerceRep</span></a></span><span> </span><span class="annot"><span class="annottext">(SomeTypeRep -&gt; TypeRep k) -&gt; SomeTypeRep -&gt; TypeRep k
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [SomeTypeRep] -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#tyConKind"><span class="hs-identifier hs-var">tyConKind</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536879"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536878"><span class="hs-identifier hs-var">kind_vars</span></a></span><span>
</span><span id="line-373"></span><span>
</span><span id="line-374"></span><span class="hs-comment">-- The fingerprint of Type. We don't store this in the TrType</span><span>
</span><span id="line-375"></span><span class="hs-comment">-- constructor, so we need to build it here.</span><span>
</span><span id="line-376"></span><span class="annot"><a href="Data.Typeable.Internal.html#fpTYPELiftedRep"><span class="hs-identifier hs-type">fpTYPELiftedRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-377"></span><span id="fpTYPELiftedRep"><span class="annot"><span class="annottext">fpTYPELiftedRep :: Fingerprint
</span><a href="Data.Typeable.Internal.html#fpTYPELiftedRep"><span class="hs-identifier hs-var hs-var">fpTYPELiftedRep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Fingerprint] -&gt; Fingerprint
</span><a href="GHC.Fingerprint.html#fingerprintFingerprints"><span class="hs-identifier hs-var">fingerprintFingerprints</span></a></span><span>
</span><span id="line-378"></span><span>      </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TyCon -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#tyConFingerprint"><span class="hs-identifier hs-var">tyConFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#tyConTYPE"><span class="hs-identifier hs-var">tyConTYPE</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TypeRep 'LiftedRep -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#trLiftedRep"><span class="hs-identifier hs-var">trLiftedRep</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-379"></span><span class="hs-comment">-- There is absolutely nothing to gain and everything to lose</span><span>
</span><span id="line-380"></span><span class="hs-comment">-- by inlining the worker. The wrapper should inline anyway.</span><span>
</span><span id="line-381"></span><span class="hs-pragma">{-# NOINLINE</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#fpTYPELiftedRep"><span class="hs-pragma hs-type">fpTYPELiftedRep</span></a></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-382"></span><span>
</span><span id="line-383"></span><span class="annot"><a href="Data.Typeable.Internal.html#trTYPE"><span class="hs-identifier hs-type">trTYPE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span>
</span><span id="line-384"></span><span id="trTYPE"><span class="annot"><span class="annottext">trTYPE :: TypeRep TYPE
</span><a href="Data.Typeable.Internal.html#trTYPE"><span class="hs-identifier hs-var hs-var">trTYPE</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep TYPE
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span>
</span><span id="line-385"></span><span>
</span><span id="line-386"></span><span class="annot"><a href="Data.Typeable.Internal.html#trLiftedRep"><span class="hs-identifier hs-type">trLiftedRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#LiftedRep"><span class="hs-identifier hs-type">LiftedRep</span></a></span><span>
</span><span id="line-387"></span><span id="trLiftedRep"><span class="annot"><span class="annottext">trLiftedRep :: TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#trLiftedRep"><span class="hs-identifier hs-var hs-var">trLiftedRep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep 'LiftedRep
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span>
</span><span id="line-388"></span><span>
</span><span id="line-389"></span><span class="annot"><a href="Data.Typeable.Internal.html#trMany"><span class="hs-identifier hs-type">trMany</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Many"><span class="hs-identifier hs-type">Many</span></a></span><span>
</span><span id="line-390"></span><span id="trMany"><span class="annot"><span class="annottext">trMany :: TypeRep 'Many
</span><a href="Data.Typeable.Internal.html#trMany"><span class="hs-identifier hs-var hs-var">trMany</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span>
</span><span id="line-391"></span><span>
</span><span id="line-392"></span><span class="hs-comment">-- | Construct a representation for a type application that is</span><span>
</span><span id="line-393"></span><span class="hs-comment">-- NOT a saturated arrow type. This is not checked!</span><span>
</span><span id="line-394"></span><span>
</span><span id="line-395"></span><span class="hs-comment">-- Note that this is known-key to the compiler, which uses it in desugar</span><span>
</span><span id="line-396"></span><span class="hs-comment">-- 'Typeable' evidence.</span><span>
</span><span id="line-397"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrApp"><span class="hs-identifier hs-type">mkTrApp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537453"><span class="annot"><a href="#local-6989586621679537453"><span class="hs-identifier hs-type">k1</span></a></span></span><span> </span><span id="local-6989586621679537452"><span class="annot"><a href="#local-6989586621679537452"><span class="hs-identifier hs-type">k2</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537451"><span class="annot"><a href="#local-6989586621679537451"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537453"><span class="hs-identifier hs-type">k1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537452"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537450"><span class="annot"><a href="#local-6989586621679537450"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537453"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span>
</span><span id="line-398"></span><span>           </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537451"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537453"><span class="hs-identifier hs-type">k1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537452"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-399"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537450"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537453"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-400"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537451"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537450"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-401"></span><span id="mkTrApp"><span class="annot"><span class="annottext">mkTrApp :: forall k1 k2 (a :: k1 -&gt; k2) (b :: k1).
TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
</span><a href="Data.Typeable.Internal.html#mkTrApp"><span class="hs-identifier hs-var hs-var">mkTrApp</span></a></span></span><span> </span><span id="local-6989586621679536864"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536864"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536863"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536863"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-comment">-- See Note [Kind caching], Wrinkle 2</span><span>
</span><span id="line-402"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">a :~~: TYPE
</span><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier hs-var">HRefl</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536864"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep TYPE -&gt; Maybe (a :~~: TYPE)
forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-operator hs-var">`eqTypeRep`</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep TYPE
</span><a href="Data.Typeable.Internal.html#trTYPE"><span class="hs-identifier hs-var">trTYPE</span></a></span><span>
</span><span id="line-403"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">b :~~: 'LiftedRep
</span><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier hs-var">HRefl</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536863"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b -&gt; TypeRep 'LiftedRep -&gt; Maybe (b :~~: 'LiftedRep)
forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-operator hs-var">`eqTypeRep`</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#trLiftedRep"><span class="hs-identifier hs-var">trLiftedRep</span></a></span><span>
</span><span id="line-404"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (a b)
TypeRep (*)
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span>
</span><span id="line-405"></span><span>
</span><span id="line-406"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trFunRes :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep b
</span><a href="Data.Typeable.Internal.html#trFunRes"><span class="hs-identifier hs-var">trFunRes</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536843"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536843"><span class="hs-identifier hs-var">res_kind</span></a></span></span><span class="hs-special">}</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep (k1 -&gt; k2)
forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536864"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-407"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrApp :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
Fingerprint
-&gt; TypeRep r1 -&gt; TypeRep r2 -&gt; TypeRep k2 -&gt; TypeRep (r1 r2)
</span><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span>
</span><span id="line-408"></span><span>    </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">trAppFingerprint :: Fingerprint
</span><a href="Data.Typeable.Internal.html#trAppFingerprint"><span class="hs-identifier hs-var">trAppFingerprint</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536842"><span class="hs-identifier hs-var">fpr</span></a></span><span>
</span><span id="line-409"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trAppFun :: TypeRep a
</span><a href="Data.Typeable.Internal.html#trAppFun"><span class="hs-identifier hs-var">trAppFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536864"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-410"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trAppArg :: TypeRep b
</span><a href="Data.Typeable.Internal.html#trAppArg"><span class="hs-identifier hs-var">trAppArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536863"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-411"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trAppKind :: TypeRep k2
</span><a href="Data.Typeable.Internal.html#trAppKind"><span class="hs-identifier hs-var">trAppKind</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep b
TypeRep k2
</span><a href="#local-6989586621679536843"><span class="hs-identifier hs-var">res_kind</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-412"></span><span>
</span><span id="line-413"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; TypeRep (a b)
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Ill-kinded type application: &quot;</span></span><span>
</span><span id="line-414"></span><span>                           </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep (k1 -&gt; k2) -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep (k1 -&gt; k2)
forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536864"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-415"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-416"></span><span>    </span><span id="local-6989586621679536839"><span class="annot"><span class="annottext">fpr_a :: Fingerprint
</span><a href="#local-6989586621679536839"><span class="hs-identifier hs-var hs-var">fpr_a</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536864"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-417"></span><span>    </span><span id="local-6989586621679536838"><span class="annot"><span class="annottext">fpr_b :: Fingerprint
</span><a href="#local-6989586621679536838"><span class="hs-identifier hs-var hs-var">fpr_b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep b -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536863"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-418"></span><span>    </span><span id="local-6989586621679536842"><span class="annot"><span class="annottext">fpr :: Fingerprint
</span><a href="#local-6989586621679536842"><span class="hs-identifier hs-var hs-var">fpr</span></a></span></span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Fingerprint] -&gt; Fingerprint
</span><a href="GHC.Fingerprint.html#fingerprintFingerprints"><span class="hs-identifier hs-var">fingerprintFingerprints</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536839"><span class="hs-identifier hs-var">fpr_a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536838"><span class="hs-identifier hs-var">fpr_b</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-419"></span><span>
</span><span id="line-420"></span><span class="hs-comment">-- | Construct a representation for a type application that</span><span>
</span><span id="line-421"></span><span class="hs-comment">-- may be a saturated arrow type. This is renamed to mkTrApp in</span><span>
</span><span id="line-422"></span><span class="hs-comment">-- Type.Reflection.Unsafe</span><span>
</span><span id="line-423"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrAppChecked"><span class="hs-identifier hs-type">mkTrAppChecked</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679536837"><span class="annot"><a href="#local-6989586621679536837"><span class="hs-identifier hs-type">k1</span></a></span></span><span> </span><span id="local-6989586621679536836"><span class="annot"><a href="#local-6989586621679536836"><span class="hs-identifier hs-type">k2</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536835"><span class="annot"><a href="#local-6989586621679536835"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536837"><span class="hs-identifier hs-type">k1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679536836"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536834"><span class="annot"><a href="#local-6989586621679536834"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536837"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span>
</span><span id="line-424"></span><span>                  </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679536835"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536837"><span class="hs-identifier hs-type">k1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679536836"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-425"></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679536834"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536837"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-426"></span><span>               </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679536835"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536834"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-427"></span><span id="mkTrAppChecked"><span class="annot"><span class="annottext">mkTrAppChecked :: forall k1 k2 (a :: k1 -&gt; k2) (b :: k1).
TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
</span><a href="Data.Typeable.Internal.html#mkTrAppChecked"><span class="hs-identifier hs-var hs-var">mkTrAppChecked</span></a></span></span><span> </span><span id="local-6989586621679536833"><span class="annot"><span class="annottext">rep :: TypeRep a
</span><a href="#local-6989586621679536833"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppFun :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r1
</span><a href="Data.Typeable.Internal.html#trAppFun"><span class="hs-identifier hs-var">trAppFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536830"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536830"><span class="hs-identifier hs-var">p</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trAppArg :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r2
</span><a href="Data.Typeable.Internal.html#trAppArg"><span class="hs-identifier hs-var">trAppArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536829"><span id="local-6989586621679536828"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536828"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536829"><span class="hs-identifier hs-type">x</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-428"></span><span>               </span><span class="hs-special">(</span><span id="local-6989586621679536827"><span id="local-6989586621679536826"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536826"><span class="hs-identifier hs-var">y</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536827"><span class="hs-identifier hs-type">y</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-429"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trTyCon :: forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#trTyCon"><span class="hs-identifier hs-var">trTyCon</span></a></span><span class="hs-glyph">=</span><span id="local-6989586621679536825"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536825"><span class="hs-identifier hs-var">con</span></a></span></span><span class="hs-special">}</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536830"><span class="hs-identifier hs-var">p</span></a></span><span>
</span><span id="line-430"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536825"><span class="hs-identifier hs-var">con</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; TyCon -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var">==</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#funTyCon"><span class="hs-identifier hs-var">funTyCon</span></a></span><span>  </span><span class="hs-comment">-- cheap check first</span><span>
</span><span id="line-431"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#IsTYPE"><span class="hs-identifier hs-type">IsTYPE</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536821"><span id="local-6989586621679536820"><span class="annot"><span class="annottext">TypeRep r
</span><a href="#local-6989586621679536820"><span class="hs-identifier hs-var">rx</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536821"><span class="hs-identifier hs-type">rx</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep k1 -&gt; Maybe (IsTYPE k1)
forall a. TypeRep a -&gt; Maybe (IsTYPE a)
</span><a href="Data.Typeable.Internal.html#isTYPE"><span class="hs-identifier hs-var">isTYPE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep b -&gt; TypeRep k1
forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536828"><span class="hs-identifier hs-var">x</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-432"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#IsTYPE"><span class="hs-identifier hs-type">IsTYPE</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536817"><span id="local-6989586621679536816"><span class="annot"><span class="annottext">TypeRep r
</span><a href="#local-6989586621679536816"><span class="hs-identifier hs-var">ry</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536817"><span class="hs-identifier hs-type">ry</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep k1 -&gt; Maybe (IsTYPE k1)
forall a. TypeRep a -&gt; Maybe (IsTYPE a)
</span><a href="Data.Typeable.Internal.html#isTYPE"><span class="hs-identifier hs-var">isTYPE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep b -&gt; TypeRep k1
forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536826"><span class="hs-identifier hs-var">y</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-433"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">(-&gt;) b :~~: a b
</span><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier hs-var">HRefl</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep b
-&gt; (Typeable b =&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; Maybe ((-&gt;) b :~~: a b)
forall k (a :: k) r. TypeRep a -&gt; (Typeable a =&gt; r) -&gt; r
</span><a href="Data.Typeable.Internal.html#withTypeable"><span class="hs-identifier hs-var">withTypeable</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536828"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">((Typeable b =&gt; Maybe ((-&gt;) b :~~: a b))
 -&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; (Typeable b =&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; Maybe ((-&gt;) b :~~: a b)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep r
-&gt; (Typeable r =&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; Maybe ((-&gt;) b :~~: a b)
forall k (a :: k) r. TypeRep a -&gt; (Typeable a =&gt; r) -&gt; r
</span><a href="Data.Typeable.Internal.html#withTypeable"><span class="hs-identifier hs-var">withTypeable</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep r
</span><a href="#local-6989586621679536820"><span class="hs-identifier hs-var">rx</span></a></span><span> </span><span class="annot"><span class="annottext">((Typeable r =&gt; Maybe ((-&gt;) b :~~: a b))
 -&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; (Typeable r =&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; Maybe ((-&gt;) b :~~: a b)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep r
-&gt; (Typeable r =&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; Maybe ((-&gt;) b :~~: a b)
forall k (a :: k) r. TypeRep a -&gt; (Typeable a =&gt; r) -&gt; r
</span><a href="Data.Typeable.Internal.html#withTypeable"><span class="hs-identifier hs-var">withTypeable</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep r
</span><a href="#local-6989586621679536816"><span class="hs-identifier hs-var">ry</span></a></span><span>
</span><span id="line-434"></span><span>                  </span><span class="annot"><span class="annottext">((Typeable r =&gt; Maybe ((-&gt;) b :~~: a b))
 -&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; (Typeable r =&gt; Maybe ((-&gt;) b :~~: a b))
-&gt; Maybe ((-&gt;) b :~~: a b)
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">forall {k} (a :: k). Typeable a =&gt; TypeRep a
forall (a :: TYPE r -&gt; *). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="hs-special">(</span><span class="hs-glyph">-&gt;</span><span class="hs-special">)</span><span> </span><span class="annot"><a href="#local-6989586621679536829"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536817"><span class="hs-identifier hs-type">ry</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeRep ((-&gt;) b) -&gt; TypeRep a -&gt; Maybe ((-&gt;) b :~~: a)
forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-operator hs-var">`eqTypeRep`</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536833"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-435"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many -&gt; TypeRep b -&gt; TypeRep b -&gt; TypeRep (b -&gt; b)
forall (m :: Multiplicity) a b.
TypeRep m -&gt; TypeRep a -&gt; TypeRep b -&gt; TypeRep (a %m -&gt; b)
</span><a href="Data.Typeable.Internal.html#mkTrFun"><span class="hs-identifier hs-var">mkTrFun</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many
</span><a href="Data.Typeable.Internal.html#trMany"><span class="hs-identifier hs-var">trMany</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
TypeRep b
</span><a href="#local-6989586621679536828"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
TypeRep b
</span><a href="#local-6989586621679536826"><span class="hs-identifier hs-var">y</span></a></span><span>
</span><span id="line-436"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrAppChecked"><span class="hs-identifier hs-var">mkTrAppChecked</span></a></span><span> </span><span id="local-6989586621679536802"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536802"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536801"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536801"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
forall k1 k2 (a :: k1 -&gt; k2) (b :: k1).
TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
</span><a href="Data.Typeable.Internal.html#mkTrApp"><span class="hs-identifier hs-var">mkTrApp</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536802"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536801"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-437"></span><span>
</span><span id="line-438"></span><span class="hs-comment">-- | A type application.</span><span>
</span><span id="line-439"></span><span class="hs-comment">--</span><span>
</span><span id="line-440"></span><span class="hs-comment">-- For instance,</span><span>
</span><span id="line-441"></span><span class="hs-comment">--</span><span>
</span><span id="line-442"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-443"></span><span class="hs-comment">-- typeRep \@(Maybe Int) === App (typeRep \@Maybe) (typeRep \@Int)</span><span>
</span><span id="line-444"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-445"></span><span class="hs-comment">--</span><span>
</span><span id="line-446"></span><span class="hs-comment">-- Note that this will also match a function type,</span><span>
</span><span id="line-447"></span><span class="hs-comment">--</span><span>
</span><span id="line-448"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-449"></span><span class="hs-comment">-- typeRep \@(Int# -&gt; Char)</span><span>
</span><span id="line-450"></span><span class="hs-comment">--   ===</span><span>
</span><span id="line-451"></span><span class="hs-comment">-- App (App arrow (typeRep \@Int#)) (typeRep \@Char)</span><span>
</span><span id="line-452"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-453"></span><span class="hs-comment">--</span><span>
</span><span id="line-454"></span><span class="hs-comment">-- where @arrow :: TypeRep ((-&gt;) :: TYPE IntRep -&gt; Type -&gt; Type)@.</span><span>
</span><span id="line-455"></span><span class="hs-comment">--</span><span>
</span><span id="line-456"></span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#App"><span class="hs-identifier hs-type">App</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537419"><span class="annot"><a href="#local-6989586621679537419"><span class="hs-identifier hs-type">k2</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537417"><span class="annot"><a href="#local-6989586621679537417"><span class="hs-identifier hs-type">t</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537419"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-457"></span><span>            </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537418"><span class="annot"><a href="#local-6989586621679537418"><span class="hs-identifier hs-type">k1</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537416"><span class="annot"><a href="#local-6989586621679537416"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537418"><span class="hs-identifier hs-type">k1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537419"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537415"><span class="annot"><a href="#local-6989586621679537415"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537418"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537417"><span class="hs-identifier hs-type">t</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#~"><span class="hs-operator hs-type">~</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537416"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537415"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-458"></span><span>            </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537416"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537415"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537417"><span class="hs-identifier hs-type">t</span></a></span><span>
</span><span id="line-459"></span><span class="hs-keyword">pattern</span><span> </span><span id="%24mApp"><span id="%24bApp"><span id="App"><span class="annot"><span class="annottext">$mApp :: forall {r} {k2} {t :: k2}.
TypeRep t
-&gt; (forall {k1} {a :: k1 -&gt; k2} {b :: k1}.
    (t ~ a b) =&gt;
    TypeRep a -&gt; TypeRep b -&gt; r)
-&gt; (Void# -&gt; r)
-&gt; r
$bApp :: forall k2 (t :: k2) k1 (a :: k1 -&gt; k2) (b :: k1).
(t ~ a b) =&gt;
TypeRep a -&gt; TypeRep b -&gt; TypeRep t
</span><a href="Data.Typeable.Internal.html#%24mApp"><span class="hs-identifier hs-var hs-var hs-var hs-var">App</span></a></span></span></span></span><span> </span><span class="annot"><a href="#local-6989586621679536798"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536797"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#splitApp"><span class="hs-identifier hs-type">splitApp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#IsApp"><span class="hs-identifier hs-type">IsApp</span></a></span><span> </span><span id="local-6989586621679536798"><span class="annot"><a href="#local-6989586621679536798"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621679536797"><span class="annot"><a href="#local-6989586621679536797"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-460"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#App"><span class="hs-identifier hs-var">App</span></a></span><span> </span><span id="local-6989586621679536791"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536791"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621679536790"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536790"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
forall k1 k2 (a :: k1 -&gt; k2) (b :: k1).
TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
</span><a href="Data.Typeable.Internal.html#mkTrAppChecked"><span class="hs-identifier hs-var">mkTrAppChecked</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536791"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536790"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-461"></span><span>
</span><span id="line-462"></span><span class="hs-keyword">data</span><span> </span><span id="AppOrCon"><span class="annot"><a href="Data.Typeable.Internal.html#AppOrCon"><span class="hs-identifier hs-var">AppOrCon</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536789"><span id="local-6989586621679536788"><span class="annot"><a href="#local-6989586621679536788"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536789"><span class="hs-identifier hs-type">k</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-463"></span><span>    </span><span id="IsApp"><span class="annot"><a href="Data.Typeable.Internal.html#IsApp"><span class="hs-identifier hs-var">IsApp</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537403"><span class="annot"><a href="#local-6989586621679537403"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span id="local-6989586621679536787"><span class="annot"><a href="#local-6989586621679536787"><span class="hs-identifier hs-type">k'</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536786"><span class="annot"><a href="#local-6989586621679536786"><span class="hs-identifier hs-type">f</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536787"><span class="hs-identifier hs-type">k'</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537403"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536785"><span class="annot"><a href="#local-6989586621679536785"><span class="hs-identifier hs-type">x</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536787"><span class="hs-identifier hs-type">k'</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-464"></span><span>          </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536786"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="hs-glyph">%</span><span class="hs-number">1</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536785"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">%</span><span class="hs-number">1</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#AppOrCon"><span class="hs-identifier hs-type">AppOrCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679536786"><span class="hs-identifier hs-type">f</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536785"><span class="hs-identifier hs-type">x</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-465"></span><span>    </span><span class="hs-comment">-- See Note [Con evidence]</span><span>
</span><span id="line-466"></span><span>    </span><span id="local-6989586621679537385"><span id="IsCon"><span class="annot"><a href="Data.Typeable.Internal.html#IsCon"><span class="hs-identifier hs-var">IsCon</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#IsApplication"><span class="hs-identifier hs-type">IsApplication</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537385"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#~"><span class="hs-operator hs-type">~</span></a></span><span> </span><span class="annot"><span class="hs-string">&quot;&quot;</span></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">%</span><span class="hs-number">1</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">%</span><span class="hs-number">1</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#AppOrCon"><span class="hs-identifier hs-type">AppOrCon</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537385"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-467"></span><span>
</span><span id="line-468"></span><span class="hs-keyword">type</span><span> </span><span class="hs-keyword">family</span><span> </span><span id="IsApplication"><span class="annot"><a href="Data.Typeable.Internal.html#IsApplication"><span class="hs-identifier hs-var">IsApplication</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536783"><span id="local-6989586621679536782"><span class="annot"><a href="#local-6989586621679536782"><span class="hs-identifier hs-type">x</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536783"><span class="hs-identifier hs-type">k</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-469"></span><span>  </span><span id="IsApplication"><span class="annot"><a href="Data.Typeable.Internal.html#IsApplication"><span class="hs-identifier hs-var">IsApplication</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="hs-string">&quot;An error message about this unifying with \&quot;\&quot; &quot;</span></span><span>
</span><span id="line-470"></span><span>     </span><span class="annot"><a href="GHC.TypeLits.html#AppendSymbol"><span class="hs-operator hs-type">`AppendSymbol`</span></a></span><span> </span><span class="annot"><span class="hs-string">&quot;means that you tried to match a TypeRep with Con or &quot;</span></span><span>
</span><span id="line-471"></span><span>     </span><span class="annot"><a href="GHC.TypeLits.html#AppendSymbol"><span class="hs-operator hs-type">`AppendSymbol`</span></a></span><span> </span><span class="annot"><span class="hs-string">&quot;Con' when the represented type was known to be an &quot;</span></span><span>
</span><span id="line-472"></span><span>     </span><span class="annot"><a href="GHC.TypeLits.html#AppendSymbol"><span class="hs-operator hs-type">`AppendSymbol`</span></a></span><span> </span><span class="annot"><span class="hs-string">&quot;application.&quot;</span></span><span>
</span><span id="line-473"></span><span>  </span><span id="IsApplication"><span class="annot"><a href="Data.Typeable.Internal.html#IsApplication"><span class="hs-identifier hs-var">IsApplication</span></a></span></span><span> </span><span class="annot"><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="hs-string">&quot;&quot;</span></span><span>
</span><span id="line-474"></span><span>
</span><span id="line-475"></span><span class="annot"><a href="Data.Typeable.Internal.html#splitApp"><span class="hs-identifier hs-type">splitApp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537411"><span class="annot"><a href="#local-6989586621679537411"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537410"><span class="annot"><a href="#local-6989586621679537410"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537411"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-476"></span><span>         </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537410"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-477"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#AppOrCon"><span class="hs-identifier hs-type">AppOrCon</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537410"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-478"></span><span id="splitApp"><span class="annot"><span class="annottext">splitApp :: forall k (a :: k). TypeRep a -&gt; AppOrCon a
</span><a href="Data.Typeable.Internal.html#splitApp"><span class="hs-identifier hs-var hs-var">splitApp</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep TYPE -&gt; TypeRep 'LiftedRep -&gt; AppOrCon (*)
forall k m (r1 :: m -&gt; k) (r2 :: m).
TypeRep r1 -&gt; TypeRep r2 -&gt; AppOrCon (r1 r2)
</span><a href="Data.Typeable.Internal.html#IsApp"><span class="hs-identifier hs-var">IsApp</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep TYPE
</span><a href="Data.Typeable.Internal.html#trTYPE"><span class="hs-identifier hs-var">trTYPE</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#trLiftedRep"><span class="hs-identifier hs-var">trLiftedRep</span></a></span><span>
</span><span id="line-479"></span><span class="annot"><a href="Data.Typeable.Internal.html#splitApp"><span class="hs-identifier hs-var">splitApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppFun :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r1
</span><a href="Data.Typeable.Internal.html#trAppFun"><span class="hs-identifier hs-var">trAppFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536776"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536776"><span class="hs-identifier hs-var">f</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trAppArg :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r2
</span><a href="Data.Typeable.Internal.html#trAppArg"><span class="hs-identifier hs-var">trAppArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536775"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536775"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep b -&gt; AppOrCon (a b)
forall k m (r1 :: m -&gt; k) (r2 :: m).
TypeRep r1 -&gt; TypeRep r2 -&gt; AppOrCon (r1 r2)
</span><a href="Data.Typeable.Internal.html#IsApp"><span class="hs-identifier hs-var">IsApp</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536776"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536775"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-480"></span><span class="annot"><a href="Data.Typeable.Internal.html#splitApp"><span class="hs-identifier hs-var">splitApp</span></a></span><span> </span><span id="local-6989586621679536774"><span class="annot"><span class="annottext">rep :: TypeRep a
</span><a href="#local-6989586621679536774"><span class="hs-identifier hs-var">rep</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trFunArg :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#trFunArg"><span class="hs-identifier hs-var">trFunArg</span></a></span><span class="hs-glyph">=</span><span id="local-6989586621679536769"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536769"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trFunRes :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep b
</span><a href="Data.Typeable.Internal.html#trFunRes"><span class="hs-identifier hs-var">trFunRes</span></a></span><span class="hs-glyph">=</span><span id="local-6989586621679536768"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536768"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (FUN m a) -&gt; TypeRep b -&gt; AppOrCon (a %m -&gt; b)
forall k m (r1 :: m -&gt; k) (r2 :: m).
TypeRep r1 -&gt; TypeRep r2 -&gt; AppOrCon (r1 r2)
</span><a href="Data.Typeable.Internal.html#IsApp"><span class="hs-identifier hs-var">IsApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep (FUN m) -&gt; TypeRep a -&gt; TypeRep (FUN m a)
forall k1 k2 (a :: k1 -&gt; k2) (b :: k1).
TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
</span><a href="Data.Typeable.Internal.html#mkTrApp"><span class="hs-identifier hs-var">mkTrApp</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep (FUN m)
</span><a href="#local-6989586621679536767"><span class="hs-identifier hs-var">arr</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536769"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536768"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-481"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679536767"><span class="annot"><span class="annottext">arr :: TypeRep (FUN m)
</span><a href="#local-6989586621679536767"><span class="hs-identifier hs-var hs-var">arr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (a %m -&gt; b) -&gt; TypeRep (FUN m)
forall (m :: Multiplicity) a b.
TypeRep (a %m -&gt; b) -&gt; TypeRep (FUN m)
</span><a href="Data.Typeable.Internal.html#bareArrow"><span class="hs-identifier hs-var">bareArrow</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
TypeRep (a %m -&gt; b)
</span><a href="#local-6989586621679536774"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-482"></span><span class="annot"><a href="Data.Typeable.Internal.html#splitApp"><span class="hs-identifier hs-var">splitApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span class="hs-special">{</span><span class="annot"><span class="annottext">trTyCon :: forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#trTyCon"><span class="hs-identifier hs-var">trTyCon</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536765"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536765"><span class="hs-identifier hs-var">con</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trKindVars :: forall k (a :: k). TypeRep a -&gt; [SomeTypeRep]
</span><a href="Data.Typeable.Internal.html#trKindVars"><span class="hs-identifier hs-var">trKindVars</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536764"><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536764"><span class="hs-identifier hs-var">kinds</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-483"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">(Any :~: Any) -&gt; IsApplication a :~: &quot;&quot;
forall a b. a -&gt; b
</span><a href="Unsafe.Coerce.html#unsafeCoerce"><span class="hs-identifier hs-var">unsafeCoerce</span></a></span><span> </span><span class="annot"><span class="annottext">Any :~: Any
forall {k} (a :: k). a :~: a
</span><a href="Data.Type.Equality.html#Refl"><span class="hs-identifier hs-var">Refl</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#IsApplication"><span class="hs-identifier hs-type">IsApplication</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537410"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="Data.Type.Equality.html#%3A~%3A"><span class="hs-operator hs-type">:~:</span></a></span><span> </span><span class="annot"><span class="hs-string">&quot;&quot;</span></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-484"></span><span>      </span><span class="annot"><span class="annottext">IsApplication a :~: &quot;&quot;
</span><a href="Data.Type.Equality.html#Refl"><span class="hs-identifier hs-var">Refl</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [SomeTypeRep] -&gt; AppOrCon a
forall {k} (a :: k).
(IsApplication a ~ &quot;&quot;) =&gt;
TyCon -&gt; [SomeTypeRep] -&gt; AppOrCon a
</span><a href="Data.Typeable.Internal.html#IsCon"><span class="hs-identifier hs-var">IsCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536765"><span class="hs-identifier hs-var">con</span></a></span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536764"><span class="hs-identifier hs-var">kinds</span></a></span><span>
</span><span id="line-485"></span><span>
</span><span id="line-486"></span><span class="hs-comment">-- | Use a 'TypeRep' as 'Typeable' evidence.</span><span>
</span><span id="line-487"></span><span class="annot"><a href="Data.Typeable.Internal.html#withTypeable"><span class="hs-identifier hs-type">withTypeable</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537423"><span class="annot"><a href="#local-6989586621679537423"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537421"><span class="annot"><a href="#local-6989586621679537421"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537423"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679537422"><span class="annot"><a href="#local-6989586621679537422"><span class="hs-identifier hs-type">rep</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537420"><span class="annot"><a href="#local-6989586621679537420"><span class="hs-identifier hs-type">r</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537422"><span class="hs-identifier hs-type">rep</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-488"></span><span>             </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537421"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537421"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537420"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537420"><span class="hs-identifier hs-type">r</span></a></span><span>
</span><span id="line-489"></span><span id="withTypeable"><span class="annot"><span class="annottext">withTypeable :: forall k (a :: k) r. TypeRep a -&gt; (Typeable a =&gt; r) -&gt; r
</span><a href="Data.Typeable.Internal.html#withTypeable"><span class="hs-identifier hs-var hs-var">withTypeable</span></a></span></span><span> </span><span id="local-6989586621679536758"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536758"><span class="hs-identifier hs-var">rep</span></a></span></span><span> </span><span id="local-6989586621679536757"><span class="annot"><span class="annottext">Typeable a =&gt; r
</span><a href="#local-6989586621679536757"><span class="hs-identifier hs-var">k</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Gift a r -&gt; TypeRep a -&gt; r
forall a b. a -&gt; b
</span><a href="Unsafe.Coerce.html#unsafeCoerce"><span class="hs-identifier hs-var">unsafeCoerce</span></a></span><span> </span><span class="annot"><span class="annottext">Gift a r
</span><a href="#local-6989586621679536756"><span class="hs-identifier hs-var">k'</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536758"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-490"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span class="annot"><a href="#local-6989586621679536756"><span class="hs-identifier hs-type">k'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Gift"><span class="hs-identifier hs-type">Gift</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537421"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537420"><span class="hs-identifier hs-type">r</span></a></span><span>
</span><span id="line-491"></span><span>        </span><span id="local-6989586621679536756"><span class="annot"><span class="annottext">k' :: Gift a r
</span><a href="#local-6989586621679536756"><span class="hs-identifier hs-var hs-var">k'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Typeable a =&gt; r) -&gt; Gift a r
forall {k} (a :: k) r. (Typeable a =&gt; r) -&gt; Gift a r
</span><a href="Data.Typeable.Internal.html#Gift"><span class="hs-identifier hs-var">Gift</span></a></span><span> </span><span class="annot"><span class="annottext">Typeable a =&gt; r
</span><a href="#local-6989586621679536757"><span class="hs-identifier hs-var">k</span></a></span><span>
</span><span id="line-492"></span><span>
</span><span id="line-493"></span><span class="hs-comment">-- | A helper to satisfy the type checker in 'withTypeable'.</span><span>
</span><span id="line-494"></span><span class="hs-keyword">newtype</span><span> </span><span id="Gift"><span class="annot"><a href="Data.Typeable.Internal.html#Gift"><span class="hs-identifier hs-var">Gift</span></a></span></span><span> </span><span id="local-6989586621679537378"><span id="local-6989586621679537377"><span class="annot"><a href="#local-6989586621679537377"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537376"><span class="annot"><a href="#local-6989586621679537376"><span class="hs-identifier hs-type">r</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537378"><span class="hs-identifier hs-type">rep</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span id="Gift"><span class="annot"><a href="Data.Typeable.Internal.html#Gift"><span class="hs-identifier hs-var">Gift</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537377"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537376"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-495"></span><span>
</span><span id="line-496"></span><span class="hs-comment">-- | Pattern match on a type constructor</span><span>
</span><span id="line-497"></span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Con"><span class="hs-identifier hs-type">Con</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537374"><span class="annot"><a href="#local-6989586621679537374"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537373"><span class="annot"><a href="#local-6989586621679537373"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537374"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-498"></span><span>            </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#IsApplication"><span class="hs-identifier hs-type">IsApplication</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537373"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#~"><span class="hs-operator hs-type">~</span></a></span><span> </span><span class="annot"><span class="hs-string">&quot;&quot;</span></span><span> </span><span class="hs-comment">-- See Note [Con evidence]</span><span>
</span><span id="line-499"></span><span>            </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537373"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-500"></span><span class="hs-keyword">pattern</span><span> </span><span id="%24mCon"><span id="Con"><span class="annot"><span class="annottext">$mCon :: forall {r} {k} {a :: k}.
TypeRep a
-&gt; ((IsApplication a ~ &quot;&quot;) =&gt; TyCon -&gt; r) -&gt; (Void# -&gt; r) -&gt; r
</span><a href="Data.Typeable.Internal.html#%24mCon"><span class="hs-identifier hs-var hs-var">Con</span></a></span></span></span><span> </span><span class="annot"><a href="#local-6989586621679536751"><span class="hs-identifier hs-type">con</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#splitApp"><span class="hs-identifier hs-type">splitApp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#IsCon"><span class="hs-identifier hs-type">IsCon</span></a></span><span> </span><span id="local-6989586621679536751"><span class="annot"><a href="#local-6989586621679536751"><span class="hs-identifier hs-var">con</span></a></span></span><span> </span><span class="annot"><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>
</span><span id="line-501"></span><span>
</span><span id="line-502"></span><span class="hs-comment">-- | Pattern match on a type constructor including its instantiated kind</span><span>
</span><span id="line-503"></span><span class="hs-comment">-- variables.</span><span>
</span><span id="line-504"></span><span class="hs-comment">--</span><span>
</span><span id="line-505"></span><span class="hs-comment">-- For instance,</span><span>
</span><span id="line-506"></span><span class="hs-comment">--</span><span>
</span><span id="line-507"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-508"></span><span class="hs-comment">-- App (Con' proxyTyCon ks) intRep = typeRep @(Proxy \@Int)</span><span>
</span><span id="line-509"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-510"></span><span class="hs-comment">--</span><span>
</span><span id="line-511"></span><span class="hs-comment">-- will bring into scope,</span><span>
</span><span id="line-512"></span><span class="hs-comment">--</span><span>
</span><span id="line-513"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-514"></span><span class="hs-comment">-- proxyTyCon :: TyCon</span><span>
</span><span id="line-515"></span><span class="hs-comment">-- ks         == [someTypeRep @Type] :: [SomeTypeRep]</span><span>
</span><span id="line-516"></span><span class="hs-comment">-- intRep     == typeRep @Int</span><span>
</span><span id="line-517"></span><span class="hs-comment">-- @</span><span>
</span><span id="line-518"></span><span class="hs-comment">--</span><span>
</span><span id="line-519"></span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Con%27"><span class="hs-identifier hs-type">Con'</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537370"><span class="annot"><a href="#local-6989586621679537370"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537369"><span class="annot"><a href="#local-6989586621679537369"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537370"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-520"></span><span>             </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#IsApplication"><span class="hs-identifier hs-type">IsApplication</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537369"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#~"><span class="hs-operator hs-type">~</span></a></span><span> </span><span class="annot"><span class="hs-string">&quot;&quot;</span></span><span> </span><span class="hs-comment">-- See Note [Con evidence]</span><span>
</span><span id="line-521"></span><span>             </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537369"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-522"></span><span class="hs-keyword">pattern</span><span> </span><span id="%24mCon%27"><span id="Con%27"><span class="annot"><span class="annottext">$mCon' :: forall {r} {k} {a :: k}.
TypeRep a
-&gt; ((IsApplication a ~ &quot;&quot;) =&gt; TyCon -&gt; [SomeTypeRep] -&gt; r)
-&gt; (Void# -&gt; r)
-&gt; r
</span><a href="Data.Typeable.Internal.html#%24mCon%27"><span class="hs-identifier hs-var hs-var">Con'</span></a></span></span></span><span> </span><span class="annot"><a href="#local-6989586621679536743"><span class="hs-identifier hs-type">con</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536742"><span class="hs-identifier hs-type">ks</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#splitApp"><span class="hs-identifier hs-type">splitApp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#IsCon"><span class="hs-identifier hs-type">IsCon</span></a></span><span> </span><span id="local-6989586621679536743"><span class="annot"><a href="#local-6989586621679536743"><span class="hs-identifier hs-var">con</span></a></span></span><span> </span><span id="local-6989586621679536742"><span class="annot"><a href="#local-6989586621679536742"><span class="hs-identifier hs-var">ks</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-523"></span><span>
</span><span id="line-524"></span><span class="hs-comment">-- TODO: Remove Fun when #14253 is fixed</span><span>
</span><span id="line-525"></span><span class="hs-pragma">{-# COMPLETE</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Fun"><span class="hs-pragma hs-type">Fun</span></a></span><span class="hs-pragma">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#App"><span class="hs-pragma hs-type">App</span></a></span><span class="hs-pragma">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Con"><span class="hs-pragma hs-type">Con</span></a></span><span>  </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-526"></span><span class="hs-pragma">{-# COMPLETE</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Fun"><span class="hs-pragma hs-type">Fun</span></a></span><span class="hs-pragma">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#App"><span class="hs-pragma hs-type">App</span></a></span><span class="hs-pragma">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Con%27"><span class="hs-pragma hs-type">Con'</span></a></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-527"></span><span>
</span><span id="line-528"></span><span class="hs-comment">{- Note [Con evidence]
    ~~~~~~~~~~~~~~~~~~~

Matching TypeRep t on Con or Con' fakes up evidence that

  IsApplication t ~ &quot;&quot;.

Why should anyone care about the value of strange internal type family?
Well, almost nobody cares about it, but the pattern checker does!
For example, suppose we have TypeRep (f x) and we want to get
TypeRep f and TypeRep x. There is no chance that the Con constructor
will match, because (f x) is not a constructor, but without the
IsApplication evidence, omitting it will lead to an incomplete pattern
warning. With the evidence, the pattern checker will see that
Con wouldn't typecheck, so everything works out as it should.

Why do we use Symbols? We would really like to use something like

  type family NotApplication (t :: k) :: Constraint where
    NotApplication (f a) = TypeError ...
    NotApplication _ = ()

Unfortunately, #11503 means that the pattern checker and type checker
will fail to actually reject the mistaken patterns. So we describe the
error in the result type. It's a horrible hack.
-}</span><span>
</span><span id="line-554"></span><span>
</span><span id="line-555"></span><span class="hs-comment">----------------- Observation ---------------------</span><span>
</span><span id="line-556"></span><span>
</span><span id="line-557"></span><span class="hs-comment">-- | Observe the type constructor of a quantified type representation.</span><span>
</span><span id="line-558"></span><span class="annot"><a href="Data.Typeable.Internal.html#someTypeRepTyCon"><span class="hs-identifier hs-type">someTypeRepTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-559"></span><span id="someTypeRepTyCon"><span class="annot"><span class="annottext">someTypeRepTyCon :: SomeTypeRep -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#someTypeRepTyCon"><span class="hs-identifier hs-var hs-var">someTypeRepTyCon</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536735"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536735"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TyCon
forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536735"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-560"></span><span>
</span><span id="line-561"></span><span class="hs-comment">-- | Observe the type constructor of a type representation</span><span>
</span><span id="line-562"></span><span id="local-6989586621679536734"><span class="annot"><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-type">typeRepTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536734"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span></span><span>
</span><span id="line-563"></span><span id="typeRepTyCon"><span class="annot"><span class="annottext">typeRepTyCon :: forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var hs-var">typeRepTyCon</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#tyConTYPE"><span class="hs-identifier hs-var">tyConTYPE</span></a></span><span>
</span><span id="line-564"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trTyCon :: forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#trTyCon"><span class="hs-identifier hs-var">trTyCon</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536731"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536731"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536731"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-565"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppFun :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r1
</span><a href="Data.Typeable.Internal.html#trAppFun"><span class="hs-identifier hs-var">trAppFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536729"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536729"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TyCon
forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536729"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-566"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (-&gt;) -&gt; TyCon
forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep (-&gt;) -&gt; TyCon) -&gt; TypeRep (-&gt;) -&gt; TyCon
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">forall {k} (a :: k). Typeable a =&gt; TypeRep a
forall (a :: * -&gt; * -&gt; *). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="hs-glyph">-&gt;</span><span class="hs-special">)</span><span>
</span><span id="line-567"></span><span>
</span><span id="line-568"></span><span class="hs-comment">-- | Type equality</span><span>
</span><span id="line-569"></span><span class="hs-comment">--</span><span>
</span><span id="line-570"></span><span class="hs-comment">-- @since 4.10</span><span>
</span><span id="line-571"></span><span class="annot"><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-identifier hs-type">eqTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537509"><span class="annot"><a href="#local-6989586621679537509"><span class="hs-identifier hs-type">k1</span></a></span></span><span> </span><span id="local-6989586621679537508"><span class="annot"><a href="#local-6989586621679537508"><span class="hs-identifier hs-type">k2</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537507"><span class="annot"><a href="#local-6989586621679537507"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537509"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537506"><span class="annot"><a href="#local-6989586621679537506"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537508"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span>
</span><span id="line-572"></span><span>             </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537507"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537506"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537507"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="Data.Type.Equality.html#%3A~~%3A"><span class="hs-operator hs-type">:~~:</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537506"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-573"></span><span id="eqTypeRep"><span class="annot"><span class="annottext">eqTypeRep :: forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-identifier hs-var hs-var">eqTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536723"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536723"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536722"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536722"><span class="hs-identifier hs-var">b</span></a></span></span><span>
</span><span id="line-574"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep b -&gt; Bool
forall k1 k2 (a :: k1) (b :: k2). TypeRep a -&gt; TypeRep b -&gt; Bool
</span><a href="Data.Typeable.Internal.html#sameTypeRep"><span class="hs-identifier hs-var">sameTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536723"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536722"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(a :~~: b) -&gt; Maybe (a :~~: b)
forall a. a -&gt; Maybe a
</span><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(Any :~~: Any) -&gt; a :~~: b
forall a b. a -&gt; b
</span><a href="Unsafe.Coerce.html#unsafeCoerce"><span class="hs-identifier hs-var">unsafeCoerce</span></a></span><span> </span><span class="annot"><span class="annottext">Any :~~: Any
forall {k1} (a :: k1). a :~~: a
</span><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier hs-var">HRefl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-575"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe (a :~~: b)
forall a. Maybe a
</span><a href="GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-576"></span><span class="hs-comment">-- We want GHC to inline eqTypeRep to get rid of the Maybe</span><span>
</span><span id="line-577"></span><span class="hs-comment">-- in the usual case that it is scrutinized immediately. We</span><span>
</span><span id="line-578"></span><span class="hs-comment">-- split eqTypeRep into a worker and wrapper because otherwise</span><span>
</span><span id="line-579"></span><span class="hs-comment">-- it's much larger than anything we'd want to inline.</span><span>
</span><span id="line-580"></span><span class="hs-pragma">{-# INLINABLE</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-pragma hs-type">eqTypeRep</span></a></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-581"></span><span>
</span><span id="line-582"></span><span class="annot"><a href="Data.Typeable.Internal.html#sameTypeRep"><span class="hs-identifier hs-type">sameTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537353"><span class="annot"><a href="#local-6989586621679537353"><span class="hs-identifier hs-type">k1</span></a></span></span><span> </span><span id="local-6989586621679537352"><span class="annot"><a href="#local-6989586621679537352"><span class="hs-identifier hs-type">k2</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537351"><span class="annot"><a href="#local-6989586621679537351"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537353"><span class="hs-identifier hs-type">k1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537350"><span class="annot"><a href="#local-6989586621679537350"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537352"><span class="hs-identifier hs-type">k2</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span>
</span><span id="line-583"></span><span>               </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537351"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537350"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Bool"><span class="hs-identifier hs-type">Bool</span></a></span><span>
</span><span id="line-584"></span><span id="sameTypeRep"><span class="annot"><span class="annottext">sameTypeRep :: forall k1 k2 (a :: k1) (b :: k2). TypeRep a -&gt; TypeRep b -&gt; Bool
</span><a href="Data.Typeable.Internal.html#sameTypeRep"><span class="hs-identifier hs-var hs-var">sameTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536718"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536718"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536717"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536717"><span class="hs-identifier hs-var">b</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536718"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">Fingerprint -&gt; Fingerprint -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var">==</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536717"><span class="hs-identifier hs-var">b</span></a></span><span>
</span><span id="line-585"></span><span>
</span><span id="line-586"></span><span class="hs-comment">-------------------------------------------------------------</span><span>
</span><span id="line-587"></span><span class="hs-comment">--</span><span>
</span><span id="line-588"></span><span class="hs-comment">--      Computing kinds</span><span>
</span><span id="line-589"></span><span class="hs-comment">--</span><span>
</span><span id="line-590"></span><span class="hs-comment">-------------------------------------------------------------</span><span>
</span><span id="line-591"></span><span>
</span><span id="line-592"></span><span class="hs-comment">-- | Observe the kind of a type.</span><span>
</span><span id="line-593"></span><span id="local-6989586621679536715"><span id="local-6989586621679536716"><span class="annot"><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-type">typeRepKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679536716"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536715"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536715"><span class="hs-identifier hs-type">k</span></a></span></span></span><span>
</span><span id="line-594"></span><span id="typeRepKind"><span class="annot"><span class="annottext">typeRepKind :: forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var hs-var">typeRepKind</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep k
TypeRep (*)
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span>
</span><span id="line-595"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trTyConKind :: forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#trTyConKind"><span class="hs-identifier hs-var">trTyConKind</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536712"><span class="annot"><span class="annottext">TypeRep k
</span><a href="#local-6989586621679536712"><span class="hs-identifier hs-var">kind</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep k
</span><a href="#local-6989586621679536712"><span class="hs-identifier hs-var">kind</span></a></span><span>
</span><span id="line-596"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppKind :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep k2
</span><a href="Data.Typeable.Internal.html#trAppKind"><span class="hs-identifier hs-var">trAppKind</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536710"><span class="annot"><span class="annottext">TypeRep k
</span><a href="#local-6989586621679536710"><span class="hs-identifier hs-var">kind</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep k
</span><a href="#local-6989586621679536710"><span class="hs-identifier hs-var">kind</span></a></span><span>
</span><span id="line-597"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">forall a. Typeable a =&gt; TypeRep a
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span>
</span><span id="line-598"></span><span>
</span><span id="line-599"></span><span class="annot"><a href="Data.Typeable.Internal.html#tyConKind"><span class="hs-identifier hs-type">tyConKind</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span>
</span><span id="line-600"></span><span id="tyConKind"><span class="annot"><span class="annottext">tyConKind :: TyCon -&gt; [SomeTypeRep] -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#tyConKind"><span class="hs-identifier hs-var hs-var">tyConKind</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Word#
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">Module
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TrName
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679536706"><span class="annot"><span class="annottext">Int#
</span><a href="#local-6989586621679536706"><span class="hs-identifier hs-var">nKindVars#</span></a></span></span><span> </span><span id="local-6989586621679536705"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536705"><span class="hs-identifier hs-var">kindRep</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679536704"><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536704"><span class="hs-identifier hs-var">kindVars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-601"></span><span>    </span><span class="hs-keyword">let</span><span> </span><span class="annot"><a href="#local-6989586621679536703"><span class="hs-identifier hs-type">kindVarsArr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Arr.html#Array"><span class="hs-identifier hs-type">A.Array</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindBndr"><span class="hs-identifier hs-type">KindBndr</span></a></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span>
</span><span id="line-602"></span><span>        </span><span id="local-6989586621679536703"><span class="annot"><span class="annottext">kindVarsArr :: Array KindBndr SomeTypeRep
</span><a href="#local-6989586621679536703"><span class="hs-identifier hs-var hs-var">kindVarsArr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(KindBndr, KindBndr) -&gt; [SomeTypeRep] -&gt; Array KindBndr SomeTypeRep
forall i e. Ix i =&gt; (i, i) -&gt; [e] -&gt; Array i e
</span><a href="GHC.Arr.html#listArray"><span class="hs-identifier hs-var">A.listArray</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">0</span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Int# -&gt; KindBndr
</span><a href="../../ghc-prim/src/GHC.Types.html#I%23"><span class="hs-identifier hs-var">I#</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int#
</span><a href="#local-6989586621679536706"><span class="hs-identifier hs-var">nKindVars#</span></a></span><span> </span><span class="annot"><span class="annottext">Int# -&gt; Int# -&gt; Int#
</span><a href="../../ghc-prim/src/GHC.Prim.html#-%23"><span class="hs-operator hs-var">-#</span></a></span><span> </span><span class="annot"><span class="annottext">Int#
</span><span class="hs-number">1#</span></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536704"><span class="hs-identifier hs-var">kindVars</span></a></span><span>
</span><span id="line-603"></span><span>    </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">Array KindBndr SomeTypeRep -&gt; KindRep -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#instantiateKindRep"><span class="hs-identifier hs-var">instantiateKindRep</span></a></span><span> </span><span class="annot"><span class="annottext">Array KindBndr SomeTypeRep
</span><a href="#local-6989586621679536703"><span class="hs-identifier hs-var">kindVarsArr</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536705"><span class="hs-identifier hs-var">kindRep</span></a></span><span>
</span><span id="line-604"></span><span>
</span><span id="line-605"></span><span class="annot"><a href="Data.Typeable.Internal.html#instantiateKindRep"><span class="hs-identifier hs-type">instantiateKindRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Arr.html#Array"><span class="hs-identifier hs-type">A.Array</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindBndr"><span class="hs-identifier hs-type">KindBndr</span></a></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span>
</span><span id="line-606"></span><span id="instantiateKindRep"><span class="annot"><span class="annottext">instantiateKindRep :: Array KindBndr SomeTypeRep -&gt; KindRep -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#instantiateKindRep"><span class="hs-identifier hs-var hs-var">instantiateKindRep</span></a></span></span><span> </span><span id="local-6989586621679536700"><span class="annot"><span class="annottext">Array KindBndr SomeTypeRep
</span><a href="#local-6989586621679536700"><span class="hs-identifier hs-var">vars</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span>
</span><span id="line-607"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-608"></span><span>    </span><span class="annot"><a href="#local-6989586621679536699"><span class="hs-identifier hs-type">go</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span>
</span><span id="line-609"></span><span>    </span><span id="local-6989586621679536699"><span class="annot"><span class="annottext">go :: KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536699"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTyConApp"><span class="hs-identifier hs-type">KindRepTyConApp</span></a></span><span> </span><span id="local-6989586621679536698"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536698"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span id="local-6989586621679536697"><span class="annot"><span class="annottext">[KindRep]
</span><a href="#local-6989586621679536697"><span class="hs-identifier hs-var">args</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-610"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621679536696"><span class="annot"><span class="annottext">n_kind_args :: KindBndr
</span><a href="#local-6989586621679536696"><span class="hs-identifier hs-var hs-var">n_kind_args</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; KindBndr
</span><a href="Data.Typeable.Internal.html#tyConKindArgs"><span class="hs-identifier hs-var">tyConKindArgs</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536698"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-611"></span><span>            </span><span class="hs-special">(</span><span id="local-6989586621679536695"><span class="annot"><span class="annottext">[KindRep]
</span><a href="#local-6989586621679536695"><span class="hs-identifier hs-var">kind_args</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679536694"><span class="annot"><span class="annottext">[KindRep]
</span><a href="#local-6989586621679536694"><span class="hs-identifier hs-var">ty_args</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; [KindRep] -&gt; ([KindRep], [KindRep])
forall a. KindBndr -&gt; [a] -&gt; ([a], [a])
</span><a href="GHC.List.html#splitAt"><span class="hs-identifier hs-var">splitAt</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536696"><span class="hs-identifier hs-var">n_kind_args</span></a></span><span> </span><span class="annot"><span class="annottext">[KindRep]
</span><a href="#local-6989586621679536697"><span class="hs-identifier hs-var">args</span></a></span><span>
</span><span id="line-612"></span><span>            </span><span class="hs-comment">-- First instantiate tycon kind arguments</span><span>
</span><span id="line-613"></span><span>            </span><span id="local-6989586621679536693"><span class="annot"><span class="annottext">tycon_app :: SomeTypeRep
</span><a href="#local-6989586621679536693"><span class="hs-identifier hs-var hs-var">tycon_app</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep Any -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep Any -&gt; SomeTypeRep) -&gt; TypeRep Any -&gt; SomeTypeRep
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [SomeTypeRep] -&gt; TypeRep Any
forall k (a :: k). TyCon -&gt; [SomeTypeRep] -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#mkTrCon"><span class="hs-identifier hs-var">mkTrCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536698"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(KindRep -&gt; SomeTypeRep) -&gt; [KindRep] -&gt; [SomeTypeRep]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">[KindRep]
</span><a href="#local-6989586621679536695"><span class="hs-identifier hs-var">kind_args</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-614"></span><span>            </span><span class="hs-comment">-- Then apply remaining type arguments</span><span>
</span><span id="line-615"></span><span>            </span><span class="annot"><a href="#local-6989586621679536692"><span class="hs-identifier hs-type">applyTy</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span>
</span><span id="line-616"></span><span>            </span><span id="local-6989586621679536692"><span class="annot"><span class="annottext">applyTy :: SomeTypeRep -&gt; KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536692"><span class="hs-identifier hs-var hs-var">applyTy</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536691"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536691"><span class="hs-identifier hs-var">acc</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679536690"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536690"><span class="hs-identifier hs-var">ty</span></a></span></span><span>
</span><span id="line-617"></span><span>              </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536689"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536689"><span class="hs-identifier hs-var">ty'</span></a></span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536690"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-618"></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (Any a) -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep (Any a) -&gt; SomeTypeRep) -&gt; TypeRep (Any a) -&gt; SomeTypeRep
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep Any -&gt; TypeRep a -&gt; TypeRep (Any a)
forall k1 k2 (a :: k1 -&gt; k2) (b :: k1).
TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
</span><a href="Data.Typeable.Internal.html#mkTrApp"><span class="hs-identifier hs-var">mkTrApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep Any
forall a b. a -&gt; b
</span><a href="Unsafe.Coerce.html#unsafeCoerce"><span class="hs-identifier hs-var">unsafeCoerce</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536691"><span class="hs-identifier hs-var">acc</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536689"><span class="hs-identifier hs-var">ty'</span></a></span><span>
</span><span id="line-619"></span><span>        </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">(SomeTypeRep -&gt; KindRep -&gt; SomeTypeRep)
-&gt; SomeTypeRep -&gt; [KindRep] -&gt; SomeTypeRep
forall a b. (b -&gt; a -&gt; b) -&gt; b -&gt; [a] -&gt; b
</span><a href="GHC.List.html#foldl%27"><span class="hs-identifier hs-var">foldl'</span></a></span><span> </span><span class="annot"><span class="annottext">SomeTypeRep -&gt; KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536692"><span class="hs-identifier hs-var">applyTy</span></a></span><span> </span><span class="annot"><span class="annottext">SomeTypeRep
</span><a href="#local-6989586621679536693"><span class="hs-identifier hs-var">tycon_app</span></a></span><span> </span><span class="annot"><span class="annottext">[KindRep]
</span><a href="#local-6989586621679536694"><span class="hs-identifier hs-var">ty_args</span></a></span><span>
</span><span id="line-620"></span><span>    </span><span class="annot"><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepVar"><span class="hs-identifier hs-type">KindRepVar</span></a></span><span> </span><span id="local-6989586621679536688"><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536688"><span class="hs-identifier hs-var">var</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-621"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Array KindBndr SomeTypeRep
</span><a href="#local-6989586621679536700"><span class="hs-identifier hs-var">vars</span></a></span><span> </span><span class="annot"><span class="annottext">Array KindBndr SomeTypeRep -&gt; KindBndr -&gt; SomeTypeRep
forall i e. Ix i =&gt; Array i e -&gt; i -&gt; e
</span><a href="GHC.Arr.html#%21"><span class="hs-operator hs-var">A.!</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536688"><span class="hs-identifier hs-var">var</span></a></span><span>
</span><span id="line-622"></span><span>    </span><span class="annot"><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepApp"><span class="hs-identifier hs-type">KindRepApp</span></a></span><span> </span><span id="local-6989586621679536686"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536686"><span class="hs-identifier hs-var">f</span></a></span></span><span> </span><span id="local-6989586621679536685"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536685"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-623"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (Any Any) -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep (Any Any) -&gt; SomeTypeRep)
-&gt; TypeRep (Any Any) -&gt; SomeTypeRep
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep Any -&gt; TypeRep Any -&gt; TypeRep (Any Any)
forall k1 k2 (a :: k1 -&gt; k2) (b :: k1).
TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
</span><a href="Data.Typeable.Internal.html#mkTrApp"><span class="hs-identifier hs-var">mkTrApp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SomeTypeRep -&gt; TypeRep Any
forall {k} (a :: k). SomeTypeRep -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#unsafeCoerceRep"><span class="hs-identifier hs-var">unsafeCoerceRep</span></a></span><span> </span><span class="annot"><span class="annottext">(SomeTypeRep -&gt; TypeRep Any) -&gt; SomeTypeRep -&gt; TypeRep Any
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536686"><span class="hs-identifier hs-var">f</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SomeTypeRep -&gt; TypeRep Any
forall {k} (a :: k). SomeTypeRep -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#unsafeCoerceRep"><span class="hs-identifier hs-var">unsafeCoerceRep</span></a></span><span> </span><span class="annot"><span class="annottext">(SomeTypeRep -&gt; TypeRep Any) -&gt; SomeTypeRep -&gt; TypeRep Any
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536685"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-624"></span><span>    </span><span class="annot"><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepFun"><span class="hs-identifier hs-type">KindRepFun</span></a></span><span> </span><span id="local-6989586621679536684"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536684"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536683"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536683"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-625"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (Any -&gt; Any) -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep (Any -&gt; Any) -&gt; SomeTypeRep)
-&gt; TypeRep (Any -&gt; Any) -&gt; SomeTypeRep
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many -&gt; TypeRep Any -&gt; TypeRep Any -&gt; TypeRep (Any -&gt; Any)
forall (m :: Multiplicity) a b.
TypeRep m -&gt; TypeRep a -&gt; TypeRep b -&gt; TypeRep (a %m -&gt; b)
</span><a href="Data.Typeable.Internal.html#mkTrFun"><span class="hs-identifier hs-var">mkTrFun</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many
</span><a href="Data.Typeable.Internal.html#trMany"><span class="hs-identifier hs-var">trMany</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SomeTypeRep -&gt; TypeRep Any
forall {k} (a :: k). SomeTypeRep -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#unsafeCoerceRep"><span class="hs-identifier hs-var">unsafeCoerceRep</span></a></span><span> </span><span class="annot"><span class="annottext">(SomeTypeRep -&gt; TypeRep Any) -&gt; SomeTypeRep -&gt; TypeRep Any
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536684"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">SomeTypeRep -&gt; TypeRep Any
forall {k} (a :: k). SomeTypeRep -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#unsafeCoerceRep"><span class="hs-identifier hs-var">unsafeCoerceRep</span></a></span><span> </span><span class="annot"><span class="annottext">(SomeTypeRep -&gt; TypeRep Any) -&gt; SomeTypeRep -&gt; TypeRep Any
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep -&gt; SomeTypeRep
</span><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536683"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-626"></span><span>    </span><span class="annot"><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTYPE"><span class="hs-identifier hs-type">KindRepTYPE</span></a></span><span> </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (*) -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep (*)
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span>
</span><span id="line-627"></span><span>    </span><span class="annot"><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTYPE"><span class="hs-identifier hs-type">KindRepTYPE</span></a></span><span> </span><span id="local-6989586621679536682"><span class="annot"><span class="annottext">RuntimeRep
</span><a href="#local-6989586621679536682"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep (*) -&gt; SomeTypeRep
forall k. SomeKindedTypeRep k -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#unkindedTypeRep"><span class="hs-identifier hs-var">unkindedTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(SomeKindedTypeRep (*) -&gt; SomeTypeRep)
-&gt; SomeKindedTypeRep (*) -&gt; SomeTypeRep
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep (RuntimeRep -&gt; *)
</span><a href="#local-6989586621679536680"><span class="hs-identifier hs-var">tYPE</span></a></span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep (RuntimeRep -&gt; *)
-&gt; SomeKindedTypeRep RuntimeRep -&gt; SomeKindedTypeRep (*)
forall k k'.
SomeKindedTypeRep (k -&gt; k')
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep k'
</span><a href="Data.Typeable.Internal.html#kApp"><span class="hs-operator hs-var">`kApp`</span></a></span><span> </span><span class="annot"><span class="annottext">RuntimeRep -&gt; SomeKindedTypeRep RuntimeRep
</span><a href="Data.Typeable.Internal.html#runtimeRepTypeRep"><span class="hs-identifier hs-var">runtimeRepTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="#local-6989586621679536682"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-628"></span><span>    </span><span class="annot"><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTypeLitS"><span class="hs-identifier hs-type">KindRepTypeLitS</span></a></span><span> </span><span id="local-6989586621679536677"><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536677"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span id="local-6989586621679536676"><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536676"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-629"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeLitSort -&gt; String -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#mkTypeLitFromString"><span class="hs-identifier hs-var">mkTypeLitFromString</span></a></span><span> </span><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536677"><span class="hs-identifier hs-var">sort</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Addr# -&gt; String
</span><a href="../../ghc-prim/src/GHC.CString.html#unpackCStringUtf8%23"><span class="hs-identifier hs-var">unpackCStringUtf8#</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536676"><span class="hs-identifier hs-var">s</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-630"></span><span>    </span><span class="annot"><a href="#local-6989586621679536699"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTypeLitD"><span class="hs-identifier hs-type">KindRepTypeLitD</span></a></span><span> </span><span id="local-6989586621679536674"><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536674"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span id="local-6989586621679536673"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536673"><span class="hs-identifier hs-var">s</span></a></span></span><span class="hs-special">)</span><span>
</span><span id="line-631"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeLitSort -&gt; String -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#mkTypeLitFromString"><span class="hs-identifier hs-var">mkTypeLitFromString</span></a></span><span> </span><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536674"><span class="hs-identifier hs-var">sort</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536673"><span class="hs-identifier hs-var">s</span></a></span><span>
</span><span id="line-632"></span><span>
</span><span id="line-633"></span><span>    </span><span id="local-6989586621679536680"><span class="annot"><span class="annottext">tYPE :: SomeKindedTypeRep (RuntimeRep -&gt; *)
</span><a href="#local-6989586621679536680"><span class="hs-identifier hs-var hs-var">tYPE</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span>
</span><span id="line-634"></span><span>
</span><span id="line-635"></span><span id="local-6989586621679537459"><span class="annot"><a href="Data.Typeable.Internal.html#unsafeCoerceRep"><span class="hs-identifier hs-type">unsafeCoerceRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537459"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-636"></span><span id="unsafeCoerceRep"><span class="annot"><span class="annottext">unsafeCoerceRep :: forall {k} (a :: k). SomeTypeRep -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#unsafeCoerceRep"><span class="hs-identifier hs-var hs-var">unsafeCoerceRep</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536670"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536670"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep a
forall a b. a -&gt; b
</span><a href="Unsafe.Coerce.html#unsafeCoerce"><span class="hs-identifier hs-var">unsafeCoerce</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536670"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-637"></span><span>
</span><span id="line-638"></span><span id="local-6989586621679537323"><span class="annot"><a href="Data.Typeable.Internal.html#unkindedTypeRep"><span class="hs-identifier hs-type">unkindedTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537323"><span class="hs-identifier hs-type">k</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span></span><span>
</span><span id="line-639"></span><span id="unkindedTypeRep"><span class="annot"><span class="annottext">unkindedTypeRep :: forall k. SomeKindedTypeRep k -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#unkindedTypeRep"><span class="hs-identifier hs-var hs-var">unkindedTypeRep</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span id="local-6989586621679536668"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536668"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536668"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-640"></span><span>
</span><span id="line-641"></span><span class="hs-keyword">data</span><span> </span><span id="SomeKindedTypeRep"><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-var">SomeKindedTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536667"><span class="annot"><a href="#local-6989586621679536667"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-642"></span><span>    </span><span id="SomeKindedTypeRep"><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-var">SomeKindedTypeRep</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537308"><span class="annot"><a href="#local-6989586621679537308"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536666"><span class="annot"><a href="#local-6989586621679536666"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537308"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536666"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-643"></span><span>                      </span><span class="hs-glyph">%</span><span class="hs-number">1</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537308"><span class="hs-identifier hs-type">k</span></a></span><span>
</span><span id="line-644"></span><span>
</span><span id="line-645"></span><span id="local-6989586621679537321"><span id="local-6989586621679537322"><span class="annot"><a href="Data.Typeable.Internal.html#kApp"><span class="hs-identifier hs-type">kApp</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537322"><span class="hs-identifier hs-type">k</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537321"><span class="hs-identifier hs-type">k'</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-646"></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537322"><span class="hs-identifier hs-type">k</span></a></span><span>
</span><span id="line-647"></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537321"><span class="hs-identifier hs-type">k'</span></a></span></span></span><span>
</span><span id="line-648"></span><span id="kApp"><span class="annot"><span class="annottext">kApp :: forall k k'.
SomeKindedTypeRep (k -&gt; k')
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep k'
</span><a href="Data.Typeable.Internal.html#kApp"><span class="hs-identifier hs-var hs-var">kApp</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span id="local-6989586621679536665"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536665"><span class="hs-identifier hs-var">f</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span id="local-6989586621679536664"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536664"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-649"></span><span>    </span><span class="annot"><span class="annottext">TypeRep (a a) -&gt; SomeKindedTypeRep k'
forall k (m :: k). TypeRep m -&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-var">SomeKindedTypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep a -&gt; TypeRep (a a)
forall k1 k2 (a :: k1 -&gt; k2) (b :: k1).
TypeRep a -&gt; TypeRep b -&gt; TypeRep (a b)
</span><a href="Data.Typeable.Internal.html#mkTrApp"><span class="hs-identifier hs-var">mkTrApp</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536665"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536664"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-650"></span><span>
</span><span id="line-651"></span><span class="annot"><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-type">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537320"><span class="annot"><a href="#local-6989586621679537320"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537319"><span class="annot"><a href="#local-6989586621679537319"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537320"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537319"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537320"><span class="hs-identifier hs-type">k</span></a></span><span>
</span><span id="line-652"></span><span id="kindedTypeRep"><span class="annot"><span class="annottext">kindedTypeRep :: forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var hs-var">kindedTypeRep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; SomeKindedTypeRep k
forall k (m :: k). TypeRep m -&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-var">SomeKindedTypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">forall (a :: k). Typeable a =&gt; TypeRep a
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="#local-6989586621679537319"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-653"></span><span>
</span><span id="line-654"></span><span class="annot"><a href="Data.Typeable.Internal.html#buildList"><span class="hs-identifier hs-type">buildList</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537305"><span class="annot"><a href="#local-6989586621679537305"><span class="hs-identifier hs-type">k</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537305"><span class="hs-identifier hs-type">k</span></a></span><span>
</span><span id="line-655"></span><span>          </span><span class="hs-glyph">=&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537305"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-656"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679537305"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-657"></span><span id="buildList"><span class="annot"><span class="annottext">buildList :: forall k.
Typeable k =&gt;
[SomeKindedTypeRep k] -&gt; SomeKindedTypeRep [k]
</span><a href="Data.Typeable.Internal.html#buildList"><span class="hs-identifier hs-var hs-var">buildList</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(SomeKindedTypeRep k
 -&gt; SomeKindedTypeRep [k] -&gt; SomeKindedTypeRep [k])
-&gt; SomeKindedTypeRep [k]
-&gt; [SomeKindedTypeRep k]
-&gt; SomeKindedTypeRep [k]
forall a b. (a -&gt; b -&gt; b) -&gt; b -&gt; [a] -&gt; b
</span><a href="GHC.Base.html#foldr"><span class="hs-identifier hs-var">foldr</span></a></span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep k
-&gt; SomeKindedTypeRep [k] -&gt; SomeKindedTypeRep [k]
forall {k}.
Typeable k =&gt;
SomeKindedTypeRep k
-&gt; SomeKindedTypeRep [k] -&gt; SomeKindedTypeRep [k]
</span><a href="#local-6989586621679536657"><span class="hs-identifier hs-var">cons</span></a></span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep [k]
</span><a href="#local-6989586621679536656"><span class="hs-identifier hs-var">nil</span></a></span><span>
</span><span id="line-658"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-659"></span><span>    </span><span id="local-6989586621679536656"><span class="annot"><span class="annottext">nil :: SomeKindedTypeRep [k]
</span><a href="#local-6989586621679536656"><span class="hs-identifier hs-var hs-var">nil</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679537305"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-660"></span><span>    </span><span id="local-6989586621679536657"><span class="annot"><span class="annottext">cons :: SomeKindedTypeRep k
-&gt; SomeKindedTypeRep [k] -&gt; SomeKindedTypeRep [k]
</span><a href="#local-6989586621679536657"><span class="hs-identifier hs-var hs-var">cons</span></a></span></span><span> </span><span id="local-6989586621679536652"><span class="annot"><span class="annottext">SomeKindedTypeRep k
</span><a href="#local-6989586621679536652"><span class="hs-identifier hs-var">x</span></a></span></span><span> </span><span id="local-6989586621679536651"><span class="annot"><span class="annottext">SomeKindedTypeRep [k]
</span><a href="#local-6989586621679536651"><span class="hs-identifier hs-var">rest</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (':) -&gt; SomeKindedTypeRep (k -&gt; [k] -&gt; [k])
forall k (m :: k). TypeRep m -&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-var">SomeKindedTypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">forall {k} (a :: k). Typeable a =&gt; TypeRep a
forall (a :: k -&gt; [k] -&gt; [k]). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="hs-special">(</span><span class="hs-glyph">:</span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep (k -&gt; [k] -&gt; [k])
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep ([k] -&gt; [k])
forall k k'.
SomeKindedTypeRep (k -&gt; k')
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep k'
</span><a href="Data.Typeable.Internal.html#kApp"><span class="hs-operator hs-var">`kApp`</span></a></span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep k
</span><a href="#local-6989586621679536652"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep ([k] -&gt; [k])
-&gt; SomeKindedTypeRep [k] -&gt; SomeKindedTypeRep [k]
forall k k'.
SomeKindedTypeRep (k -&gt; k')
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep k'
</span><a href="Data.Typeable.Internal.html#kApp"><span class="hs-operator hs-var">`kApp`</span></a></span><span> </span><span class="annot"><span class="annottext">SomeKindedTypeRep [k]
</span><a href="#local-6989586621679536651"><span class="hs-identifier hs-var">rest</span></a></span><span>
</span><span id="line-661"></span><span>
</span><span id="line-662"></span><span class="annot"><a href="Data.Typeable.Internal.html#runtimeRepTypeRep"><span class="hs-identifier hs-type">runtimeRepTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span>
</span><span id="line-663"></span><span id="runtimeRepTypeRep"><span class="annot"><span class="annottext">runtimeRepTypeRep :: RuntimeRep -&gt; SomeKindedTypeRep RuntimeRep
</span><a href="Data.Typeable.Internal.html#runtimeRepTypeRep"><span class="hs-identifier hs-var hs-var">runtimeRepTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536650"><span class="annot"><span class="annottext">RuntimeRep
</span><a href="#local-6989586621679536650"><span class="hs-identifier hs-var">r</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-664"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="#local-6989586621679536650"><span class="hs-identifier hs-var">r</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-665"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#LiftedRep"><span class="hs-identifier hs-type">LiftedRep</span></a></span><span>
</span><span id="line-666"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#UnliftedRep"><span class="hs-identifier hs-var">UnliftedRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#UnliftedRep"><span class="hs-identifier hs-type">UnliftedRep</span></a></span><span>
</span><span id="line-667"></span><span>      </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecRep"><span class="hs-identifier hs-type">VecRep</span></a></span><span> </span><span id="local-6989586621679536648"><span class="annot"><span class="annottext">VecCount
</span><a href="#local-6989586621679536648"><span class="hs-identifier hs-var">c</span></a></span></span><span> </span><span id="local-6989586621679536647"><span class="annot"><span class="annottext">VecElem
</span><a href="#local-6989586621679536647"><span class="hs-identifier hs-var">e</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecRep"><span class="hs-identifier hs-type">VecRep</span></a></span><span>
</span><span id="line-668"></span><span>                     </span><span class="annot"><span class="annottext">SomeKindedTypeRep (VecCount -&gt; VecElem -&gt; RuntimeRep)
-&gt; SomeKindedTypeRep VecCount
-&gt; SomeKindedTypeRep (VecElem -&gt; RuntimeRep)
forall k k'.
SomeKindedTypeRep (k -&gt; k')
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep k'
</span><a href="Data.Typeable.Internal.html#kApp"><span class="hs-operator hs-var">`kApp`</span></a></span><span> </span><span class="annot"><span class="annottext">VecCount -&gt; SomeKindedTypeRep VecCount
</span><a href="Data.Typeable.Internal.html#vecCountTypeRep"><span class="hs-identifier hs-var">vecCountTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">VecCount
</span><a href="#local-6989586621679536648"><span class="hs-identifier hs-var">c</span></a></span><span>
</span><span id="line-669"></span><span>                     </span><span class="annot"><span class="annottext">SomeKindedTypeRep (VecElem -&gt; RuntimeRep)
-&gt; SomeKindedTypeRep VecElem -&gt; SomeKindedTypeRep RuntimeRep
forall k k'.
SomeKindedTypeRep (k -&gt; k')
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep k'
</span><a href="Data.Typeable.Internal.html#kApp"><span class="hs-operator hs-var">`kApp`</span></a></span><span> </span><span class="annot"><span class="annottext">VecElem -&gt; SomeKindedTypeRep VecElem
</span><a href="Data.Typeable.Internal.html#vecElemTypeRep"><span class="hs-identifier hs-var">vecElemTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">VecElem
</span><a href="#local-6989586621679536647"><span class="hs-identifier hs-var">e</span></a></span><span>
</span><span id="line-670"></span><span>      </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TupleRep"><span class="hs-identifier hs-type">TupleRep</span></a></span><span> </span><span id="local-6989586621679536644"><span class="annot"><span class="annottext">[RuntimeRep]
</span><a href="#local-6989586621679536644"><span class="hs-identifier hs-var">rs</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TupleRep"><span class="hs-identifier hs-type">TupleRep</span></a></span><span>
</span><span id="line-671"></span><span>                     </span><span class="annot"><span class="annottext">SomeKindedTypeRep ([RuntimeRep] -&gt; RuntimeRep)
-&gt; SomeKindedTypeRep [RuntimeRep] -&gt; SomeKindedTypeRep RuntimeRep
forall k k'.
SomeKindedTypeRep (k -&gt; k')
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep k'
</span><a href="Data.Typeable.Internal.html#kApp"><span class="hs-operator hs-var">`kApp`</span></a></span><span> </span><span class="annot"><span class="annottext">[SomeKindedTypeRep RuntimeRep] -&gt; SomeKindedTypeRep [RuntimeRep]
forall k.
Typeable k =&gt;
[SomeKindedTypeRep k] -&gt; SomeKindedTypeRep [k]
</span><a href="Data.Typeable.Internal.html#buildList"><span class="hs-identifier hs-var">buildList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(RuntimeRep -&gt; SomeKindedTypeRep RuntimeRep)
-&gt; [RuntimeRep] -&gt; [SomeKindedTypeRep RuntimeRep]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">RuntimeRep -&gt; SomeKindedTypeRep RuntimeRep
</span><a href="Data.Typeable.Internal.html#runtimeRepTypeRep"><span class="hs-identifier hs-var">runtimeRepTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">[RuntimeRep]
</span><a href="#local-6989586621679536644"><span class="hs-identifier hs-var">rs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-672"></span><span>      </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#SumRep"><span class="hs-identifier hs-type">SumRep</span></a></span><span> </span><span id="local-6989586621679536643"><span class="annot"><span class="annottext">[RuntimeRep]
</span><a href="#local-6989586621679536643"><span class="hs-identifier hs-var">rs</span></a></span></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#SumRep"><span class="hs-identifier hs-type">SumRep</span></a></span><span>
</span><span id="line-673"></span><span>                     </span><span class="annot"><span class="annottext">SomeKindedTypeRep ([RuntimeRep] -&gt; RuntimeRep)
-&gt; SomeKindedTypeRep [RuntimeRep] -&gt; SomeKindedTypeRep RuntimeRep
forall k k'.
SomeKindedTypeRep (k -&gt; k')
-&gt; SomeKindedTypeRep k -&gt; SomeKindedTypeRep k'
</span><a href="Data.Typeable.Internal.html#kApp"><span class="hs-operator hs-var">`kApp`</span></a></span><span> </span><span class="annot"><span class="annottext">[SomeKindedTypeRep RuntimeRep] -&gt; SomeKindedTypeRep [RuntimeRep]
forall k.
Typeable k =&gt;
[SomeKindedTypeRep k] -&gt; SomeKindedTypeRep [k]
</span><a href="Data.Typeable.Internal.html#buildList"><span class="hs-identifier hs-var">buildList</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(RuntimeRep -&gt; SomeKindedTypeRep RuntimeRep)
-&gt; [RuntimeRep] -&gt; [SomeKindedTypeRep RuntimeRep]
forall a b. (a -&gt; b) -&gt; [a] -&gt; [b]
</span><a href="GHC.Base.html#map"><span class="hs-identifier hs-var">map</span></a></span><span> </span><span class="annot"><span class="annottext">RuntimeRep -&gt; SomeKindedTypeRep RuntimeRep
</span><a href="Data.Typeable.Internal.html#runtimeRepTypeRep"><span class="hs-identifier hs-var">runtimeRepTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">[RuntimeRep]
</span><a href="#local-6989586621679536643"><span class="hs-identifier hs-var">rs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-674"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#IntRep"><span class="hs-identifier hs-var">IntRep</span></a></span><span>      </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#IntRep"><span class="hs-identifier hs-type">IntRep</span></a></span><span>
</span><span id="line-675"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#Int8Rep"><span class="hs-identifier hs-var">Int8Rep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int8Rep"><span class="hs-identifier hs-type">Int8Rep</span></a></span><span>
</span><span id="line-676"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#Int16Rep"><span class="hs-identifier hs-var">Int16Rep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int16Rep"><span class="hs-identifier hs-type">Int16Rep</span></a></span><span>
</span><span id="line-677"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#Int32Rep"><span class="hs-identifier hs-var">Int32Rep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int32Rep"><span class="hs-identifier hs-type">Int32Rep</span></a></span><span>
</span><span id="line-678"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#Int64Rep"><span class="hs-identifier hs-var">Int64Rep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int64Rep"><span class="hs-identifier hs-type">Int64Rep</span></a></span><span>
</span><span id="line-679"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#WordRep"><span class="hs-identifier hs-var">WordRep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#WordRep"><span class="hs-identifier hs-type">WordRep</span></a></span><span>
</span><span id="line-680"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#Word8Rep"><span class="hs-identifier hs-var">Word8Rep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Word8Rep"><span class="hs-identifier hs-type">Word8Rep</span></a></span><span>
</span><span id="line-681"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#Word16Rep"><span class="hs-identifier hs-var">Word16Rep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Word16Rep"><span class="hs-identifier hs-type">Word16Rep</span></a></span><span>
</span><span id="line-682"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#Word32Rep"><span class="hs-identifier hs-var">Word32Rep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Word32Rep"><span class="hs-identifier hs-type">Word32Rep</span></a></span><span>
</span><span id="line-683"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#Word64Rep"><span class="hs-identifier hs-var">Word64Rep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Word64Rep"><span class="hs-identifier hs-type">Word64Rep</span></a></span><span>
</span><span id="line-684"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#AddrRep"><span class="hs-identifier hs-var">AddrRep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#AddrRep"><span class="hs-identifier hs-type">AddrRep</span></a></span><span>
</span><span id="line-685"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#FloatRep"><span class="hs-identifier hs-var">FloatRep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#FloatRep"><span class="hs-identifier hs-type">FloatRep</span></a></span><span>
</span><span id="line-686"></span><span>      </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#DoubleRep"><span class="hs-identifier hs-var">DoubleRep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#DoubleRep"><span class="hs-identifier hs-type">DoubleRep</span></a></span><span>
</span><span id="line-687"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-688"></span><span>    </span><span class="annot"><a href="#local-6989586621679536649"><span class="hs-identifier hs-type">rep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537300"><span class="annot"><a href="#local-6989586621679537300"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537300"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span>
</span><span id="line-689"></span><span>    </span><span id="local-6989586621679536649"><span class="annot"><span class="annottext">rep :: Typeable 'LiftedRep =&gt; SomeKindedTypeRep RuntimeRep
</span><a href="#local-6989586621679536649"><span class="hs-identifier hs-var hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="#local-6989586621679537300"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-690"></span><span>
</span><span id="line-691"></span><span class="annot"><a href="Data.Typeable.Internal.html#vecCountTypeRep"><span class="hs-identifier hs-type">vecCountTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecCount"><span class="hs-identifier hs-type">VecCount</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecCount"><span class="hs-identifier hs-type">VecCount</span></a></span><span>
</span><span id="line-692"></span><span id="vecCountTypeRep"><span class="annot"><span class="annottext">vecCountTypeRep :: VecCount -&gt; SomeKindedTypeRep VecCount
</span><a href="Data.Typeable.Internal.html#vecCountTypeRep"><span class="hs-identifier hs-var hs-var">vecCountTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536640"><span class="annot"><span class="annottext">VecCount
</span><a href="#local-6989586621679536640"><span class="hs-identifier hs-var">c</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-693"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">VecCount
</span><a href="#local-6989586621679536640"><span class="hs-identifier hs-var">c</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-694"></span><span>      </span><span class="annot"><span class="annottext">VecCount
</span><a href="../../ghc-prim/src/GHC.Types.html#Vec2"><span class="hs-identifier hs-var">Vec2</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecCount). Typeable a =&gt; SomeKindedTypeRep VecCount
</span><a href="#local-6989586621679536639"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Vec2"><span class="hs-identifier hs-type">Vec2</span></a></span><span>
</span><span id="line-695"></span><span>      </span><span class="annot"><span class="annottext">VecCount
</span><a href="../../ghc-prim/src/GHC.Types.html#Vec4"><span class="hs-identifier hs-var">Vec4</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecCount). Typeable a =&gt; SomeKindedTypeRep VecCount
</span><a href="#local-6989586621679536639"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Vec4"><span class="hs-identifier hs-type">Vec4</span></a></span><span>
</span><span id="line-696"></span><span>      </span><span class="annot"><span class="annottext">VecCount
</span><a href="../../ghc-prim/src/GHC.Types.html#Vec8"><span class="hs-identifier hs-var">Vec8</span></a></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecCount). Typeable a =&gt; SomeKindedTypeRep VecCount
</span><a href="#local-6989586621679536639"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Vec8"><span class="hs-identifier hs-type">Vec8</span></a></span><span>
</span><span id="line-697"></span><span>      </span><span class="annot"><span class="annottext">VecCount
</span><a href="../../ghc-prim/src/GHC.Types.html#Vec16"><span class="hs-identifier hs-var">Vec16</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecCount). Typeable a =&gt; SomeKindedTypeRep VecCount
</span><a href="#local-6989586621679536639"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Vec16"><span class="hs-identifier hs-type">Vec16</span></a></span><span>
</span><span id="line-698"></span><span>      </span><span class="annot"><span class="annottext">VecCount
</span><a href="../../ghc-prim/src/GHC.Types.html#Vec32"><span class="hs-identifier hs-var">Vec32</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecCount). Typeable a =&gt; SomeKindedTypeRep VecCount
</span><a href="#local-6989586621679536639"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Vec32"><span class="hs-identifier hs-type">Vec32</span></a></span><span>
</span><span id="line-699"></span><span>      </span><span class="annot"><span class="annottext">VecCount
</span><a href="../../ghc-prim/src/GHC.Types.html#Vec64"><span class="hs-identifier hs-var">Vec64</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecCount). Typeable a =&gt; SomeKindedTypeRep VecCount
</span><a href="#local-6989586621679536639"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Vec64"><span class="hs-identifier hs-type">Vec64</span></a></span><span>
</span><span id="line-700"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-701"></span><span>    </span><span class="annot"><a href="#local-6989586621679536639"><span class="hs-identifier hs-type">rep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537298"><span class="annot"><a href="#local-6989586621679537298"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecCount"><span class="hs-identifier hs-type">VecCount</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537298"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecCount"><span class="hs-identifier hs-type">VecCount</span></a></span><span>
</span><span id="line-702"></span><span>    </span><span id="local-6989586621679536639"><span class="annot"><span class="annottext">rep :: forall (a :: VecCount). Typeable a =&gt; SomeKindedTypeRep VecCount
</span><a href="#local-6989586621679536639"><span class="hs-identifier hs-var hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecCount"><span class="hs-identifier hs-type">VecCount</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="#local-6989586621679537298"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-703"></span><span>
</span><span id="line-704"></span><span class="annot"><a href="Data.Typeable.Internal.html#vecElemTypeRep"><span class="hs-identifier hs-type">vecElemTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecElem"><span class="hs-identifier hs-type">VecElem</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecElem"><span class="hs-identifier hs-type">VecElem</span></a></span><span>
</span><span id="line-705"></span><span id="vecElemTypeRep"><span class="annot"><span class="annottext">vecElemTypeRep :: VecElem -&gt; SomeKindedTypeRep VecElem
</span><a href="Data.Typeable.Internal.html#vecElemTypeRep"><span class="hs-identifier hs-var hs-var">vecElemTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536636"><span class="annot"><span class="annottext">VecElem
</span><a href="#local-6989586621679536636"><span class="hs-identifier hs-var">e</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-706"></span><span>    </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">VecElem
</span><a href="#local-6989586621679536636"><span class="hs-identifier hs-var">e</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-707"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#Int8ElemRep"><span class="hs-identifier hs-var">Int8ElemRep</span></a></span><span>     </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int8ElemRep"><span class="hs-identifier hs-type">Int8ElemRep</span></a></span><span>
</span><span id="line-708"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#Int16ElemRep"><span class="hs-identifier hs-var">Int16ElemRep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int16ElemRep"><span class="hs-identifier hs-type">Int16ElemRep</span></a></span><span>
</span><span id="line-709"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#Int32ElemRep"><span class="hs-identifier hs-var">Int32ElemRep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int32ElemRep"><span class="hs-identifier hs-type">Int32ElemRep</span></a></span><span>
</span><span id="line-710"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#Int64ElemRep"><span class="hs-identifier hs-var">Int64ElemRep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int64ElemRep"><span class="hs-identifier hs-type">Int64ElemRep</span></a></span><span>
</span><span id="line-711"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#Word8ElemRep"><span class="hs-identifier hs-var">Word8ElemRep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Word8ElemRep"><span class="hs-identifier hs-type">Word8ElemRep</span></a></span><span>
</span><span id="line-712"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#Word16ElemRep"><span class="hs-identifier hs-var">Word16ElemRep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Word16ElemRep"><span class="hs-identifier hs-type">Word16ElemRep</span></a></span><span>
</span><span id="line-713"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#Word32ElemRep"><span class="hs-identifier hs-var">Word32ElemRep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Word32ElemRep"><span class="hs-identifier hs-type">Word32ElemRep</span></a></span><span>
</span><span id="line-714"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#Word64ElemRep"><span class="hs-identifier hs-var">Word64ElemRep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Word64ElemRep"><span class="hs-identifier hs-type">Word64ElemRep</span></a></span><span>
</span><span id="line-715"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#FloatElemRep"><span class="hs-identifier hs-var">FloatElemRep</span></a></span><span>    </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#FloatElemRep"><span class="hs-identifier hs-type">FloatElemRep</span></a></span><span>
</span><span id="line-716"></span><span>      </span><span class="annot"><span class="annottext">VecElem
</span><a href="../../ghc-prim/src/GHC.Types.html#DoubleElemRep"><span class="hs-identifier hs-var">DoubleElemRep</span></a></span><span>   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">'</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#DoubleElemRep"><span class="hs-identifier hs-type">DoubleElemRep</span></a></span><span>
</span><span id="line-717"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-718"></span><span>    </span><span class="annot"><a href="#local-6989586621679536635"><span class="hs-identifier hs-type">rep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537296"><span class="annot"><a href="#local-6989586621679537296"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecElem"><span class="hs-identifier hs-type">VecElem</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537296"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeKindedTypeRep"><span class="hs-identifier hs-type">SomeKindedTypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecElem"><span class="hs-identifier hs-type">VecElem</span></a></span><span>
</span><span id="line-719"></span><span>    </span><span id="local-6989586621679536635"><span class="annot"><span class="annottext">rep :: forall (a :: VecElem). Typeable a =&gt; SomeKindedTypeRep VecElem
</span><a href="#local-6989586621679536635"><span class="hs-identifier hs-var hs-var">rep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">forall k (a :: k). Typeable a =&gt; SomeKindedTypeRep k
</span><a href="Data.Typeable.Internal.html#kindedTypeRep"><span class="hs-identifier hs-var">kindedTypeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#VecElem"><span class="hs-identifier hs-type">VecElem</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="#local-6989586621679537296"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-720"></span><span>
</span><span id="line-721"></span><span class="annot"><a href="Data.Typeable.Internal.html#bareArrow"><span class="hs-identifier hs-type">bareArrow</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537390"><span class="annot"><a href="#local-6989586621679537390"><span class="hs-identifier hs-type">m</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Multiplicity"><span class="hs-identifier hs-type">Multiplicity</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537394"><span class="annot"><a href="#local-6989586621679537394"><span class="hs-identifier hs-type">r1</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537393"><span class="annot"><a href="#local-6989586621679537393"><span class="hs-identifier hs-type">r2</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-722"></span><span>                    </span><span class="hs-special">(</span><span id="local-6989586621679537392"><span class="annot"><a href="#local-6989586621679537392"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537394"><span class="hs-identifier hs-type">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537391"><span class="annot"><a href="#local-6989586621679537391"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537393"><span class="hs-identifier hs-type">r2</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-723"></span><span>          </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#FUN"><span class="hs-identifier hs-type">FUN</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537390"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537392"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537391"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-724"></span><span>          </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#FUN"><span class="hs-identifier hs-type">FUN</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537390"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537394"><span class="hs-identifier hs-type">r1</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537393"><span class="hs-identifier hs-type">r2</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-725"></span><span id="bareArrow"><span class="annot"><span class="annottext">bareArrow :: forall (m :: Multiplicity) a b.
TypeRep (a %m -&gt; b) -&gt; TypeRep (FUN m)
</span><a href="Data.Typeable.Internal.html#bareArrow"><span class="hs-identifier hs-var hs-var">bareArrow</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679536624"><span class="annot"><span class="annottext">TypeRep m
</span><a href="#local-6989586621679536624"><span class="hs-identifier hs-var">m</span></a></span></span><span> </span><span id="local-6989586621679536623"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536623"><span class="hs-identifier hs-var">a</span></a></span></span><span> </span><span id="local-6989586621679536622"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536622"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-726"></span><span>    </span><span class="annot"><span class="annottext">TyCon -&gt; [SomeTypeRep] -&gt; TypeRep (FUN m)
forall k (a :: k). TyCon -&gt; [SomeTypeRep] -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#mkTrCon"><span class="hs-identifier hs-var">mkTrCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#funTyCon"><span class="hs-identifier hs-var">funTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TypeRep m -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep m
</span><a href="#local-6989586621679536624"><span class="hs-identifier hs-var">m</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TypeRep r1 -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep r1
</span><a href="#local-6989586621679536621"><span class="hs-identifier hs-var">rep1</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TypeRep r2 -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep r2
</span><a href="#local-6989586621679536620"><span class="hs-identifier hs-var">rep2</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-727"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-728"></span><span>    </span><span id="local-6989586621679536621"><span class="annot"><span class="annottext">rep1 :: TypeRep r1
</span><a href="#local-6989586621679536621"><span class="hs-identifier hs-var hs-var">rep1</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (TYPE r1) -&gt; TypeRep r1
TypeRep (*) -&gt; TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#getRuntimeRep"><span class="hs-identifier hs-var">getRuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep (TYPE r1) -&gt; TypeRep r1)
-&gt; TypeRep (TYPE r1) -&gt; TypeRep r1
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep (TYPE r1)
forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536623"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537394"><span class="hs-identifier hs-type">r1</span></a></span><span>
</span><span id="line-729"></span><span>    </span><span id="local-6989586621679536620"><span class="annot"><span class="annottext">rep2 :: TypeRep r2
</span><a href="#local-6989586621679536620"><span class="hs-identifier hs-var hs-var">rep2</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (TYPE r2) -&gt; TypeRep r2
TypeRep (*) -&gt; TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#getRuntimeRep"><span class="hs-identifier hs-var">getRuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep (TYPE r2) -&gt; TypeRep r2)
-&gt; TypeRep (TYPE r2) -&gt; TypeRep r2
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b -&gt; TypeRep (TYPE r2)
forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536622"><span class="hs-identifier hs-var">b</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537393"><span class="hs-identifier hs-type">r2</span></a></span><span>
</span><span id="line-730"></span><span class="annot"><a href="Data.Typeable.Internal.html#bareArrow"><span class="hs-identifier hs-var">bareArrow</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep (a %m -&gt; b)
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; TypeRep (FUN m)
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Data.Typeable.Internal.bareArrow: impossible&quot;</span></span><span>
</span><span id="line-731"></span><span>
</span><span id="line-732"></span><span class="hs-keyword">data</span><span> </span><span id="IsTYPE"><span class="annot"><a href="Data.Typeable.Internal.html#IsTYPE"><span class="hs-identifier hs-var">IsTYPE</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536618"><span class="annot"><a href="#local-6989586621679536618"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-733"></span><span>    </span><span id="IsTYPE"><span class="annot"><a href="Data.Typeable.Internal.html#IsTYPE"><span class="hs-identifier hs-var">IsTYPE</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536617"><span class="annot"><a href="#local-6989586621679536617"><span class="hs-identifier hs-type">r</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536617"><span class="hs-identifier hs-type">r</span></a></span><span> </span><span class="hs-glyph">%</span><span class="hs-number">1</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#IsTYPE"><span class="hs-identifier hs-type">IsTYPE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536617"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-734"></span><span>
</span><span id="line-735"></span><span class="hs-comment">-- | Is a type of the form @TYPE rep@?</span><span>
</span><span id="line-736"></span><span id="local-6989586621679537425"><span class="annot"><a href="Data.Typeable.Internal.html#isTYPE"><span class="hs-identifier hs-type">isTYPE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537425"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#IsTYPE"><span class="hs-identifier hs-type">IsTYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537425"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span></span><span>
</span><span id="line-737"></span><span id="isTYPE"><span class="annot"><span class="annottext">isTYPE :: forall a. TypeRep a -&gt; Maybe (IsTYPE a)
</span><a href="Data.Typeable.Internal.html#isTYPE"><span class="hs-identifier hs-var hs-var">isTYPE</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IsTYPE (*) -&gt; Maybe (IsTYPE (*))
forall a. a -&gt; Maybe a
</span><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep 'LiftedRep -&gt; IsTYPE (*)
TypeRep 'LiftedRep -&gt; IsTYPE (*)
</span><a href="Data.Typeable.Internal.html#IsTYPE"><span class="hs-identifier hs-var">IsTYPE</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#trLiftedRep"><span class="hs-identifier hs-var">trLiftedRep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-738"></span><span class="annot"><a href="Data.Typeable.Internal.html#isTYPE"><span class="hs-identifier hs-var">isTYPE</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppFun :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r1
</span><a href="Data.Typeable.Internal.html#trAppFun"><span class="hs-identifier hs-var">trAppFun</span></a></span><span class="hs-glyph">=</span><span id="local-6989586621679536612"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536612"><span class="hs-identifier hs-var">f</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trAppArg :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r2
</span><a href="Data.Typeable.Internal.html#trAppArg"><span class="hs-identifier hs-var">trAppArg</span></a></span><span class="hs-glyph">=</span><span id="local-6989586621679536611"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536611"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-739"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">a :~~: TYPE
</span><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier hs-var">HRefl</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536612"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep TYPE -&gt; Maybe (a :~~: TYPE)
forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-operator hs-var">`eqTypeRep`</span></a></span><span> </span><span class="annot"><span class="annottext">forall {k} (a :: k). Typeable a =&gt; TypeRep a
forall (a :: RuntimeRep -&gt; *). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span>
</span><span id="line-740"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">IsTYPE (TYPE b) -&gt; Maybe (IsTYPE (TYPE b))
forall a. a -&gt; Maybe a
</span><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep b -&gt; IsTYPE (TYPE b)
TypeRep 'LiftedRep -&gt; IsTYPE (*)
</span><a href="Data.Typeable.Internal.html#IsTYPE"><span class="hs-identifier hs-var">IsTYPE</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
TypeRep b
</span><a href="#local-6989586621679536611"><span class="hs-identifier hs-var">r</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-741"></span><span class="annot"><a href="Data.Typeable.Internal.html#isTYPE"><span class="hs-identifier hs-var">isTYPE</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe (IsTYPE a)
forall a. Maybe a
</span><a href="GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-742"></span><span>
</span><span id="line-743"></span><span class="annot"><a href="Data.Typeable.Internal.html#getRuntimeRep"><span class="hs-identifier hs-type">getRuntimeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537284"><span class="annot"><a href="#local-6989586621679537284"><span class="hs-identifier hs-type">r</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537284"><span class="hs-identifier hs-type">r</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537284"><span class="hs-identifier hs-type">r</span></a></span><span>
</span><span id="line-744"></span><span id="getRuntimeRep"><span class="annot"><span class="annottext">getRuntimeRep :: TypeRep (*) -&gt; TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#getRuntimeRep"><span class="hs-identifier hs-var hs-var">getRuntimeRep</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeRep (TYPE r)
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep r
TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#trLiftedRep"><span class="hs-identifier hs-var">trLiftedRep</span></a></span><span>
</span><span id="line-745"></span><span class="annot"><a href="Data.Typeable.Internal.html#getRuntimeRep"><span class="hs-identifier hs-var">getRuntimeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppArg :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r2
</span><a href="Data.Typeable.Internal.html#trAppArg"><span class="hs-identifier hs-var">trAppArg</span></a></span><span class="hs-glyph">=</span><span id="local-6989586621679536589"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536589"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep b
TypeRep r
</span><a href="#local-6989586621679536589"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-746"></span><span class="annot"><a href="Data.Typeable.Internal.html#getRuntimeRep"><span class="hs-identifier hs-var">getRuntimeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep (TYPE r)
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; TypeRep r
forall a. HasCallStack =&gt; String -&gt; a
</span><a href="GHC.Err.html#error"><span class="hs-identifier hs-var">error</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Data.Typeable.Internal.getRuntimeRep: impossible&quot;</span></span><span>
</span><span id="line-747"></span><span>
</span><span id="line-748"></span><span>
</span><span id="line-749"></span><span class="hs-comment">-------------------------------------------------------------</span><span>
</span><span id="line-750"></span><span class="hs-comment">--</span><span>
</span><span id="line-751"></span><span class="hs-comment">--      The Typeable class and friends</span><span>
</span><span id="line-752"></span><span class="hs-comment">--</span><span>
</span><span id="line-753"></span><span class="hs-comment">-------------------------------------------------------------</span><span>
</span><span id="line-754"></span><span>
</span><span id="line-755"></span><span class="hs-comment">-- | The class 'Typeable' allows a concrete representation of a type to</span><span>
</span><span id="line-756"></span><span class="hs-comment">-- be calculated.</span><span>
</span><span id="line-757"></span><span class="hs-keyword">class</span><span> </span><span id="Typeable"><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-var">Typeable</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536588"><span id="local-6989586621679536587"><span class="annot"><a href="#local-6989586621679536587"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536588"><span class="hs-identifier hs-type">k</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-758"></span><span>  </span><span id="typeRep%23"><span class="annot"><a href="Data.Typeable.Internal.html#typeRep%23"><span class="hs-identifier hs-type">typeRep#</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536587"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-759"></span><span>
</span><span id="line-760"></span><span id="local-6989586621679537454"><span class="annot"><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-type">typeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537454"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537454"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-761"></span><span id="typeRep"><span class="annot"><span class="annottext">typeRep :: forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var hs-var">typeRep</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep%23"><span class="hs-identifier hs-var">typeRep#</span></a></span><span>
</span><span id="line-762"></span><span>
</span><span id="line-763"></span><span id="local-6989586621679537273"><span class="annot"><a href="Data.Typeable.Internal.html#typeOf"><span class="hs-identifier hs-type">typeOf</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537273"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537273"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537273"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-764"></span><span id="typeOf"><span class="annot"><span class="annottext">typeOf :: forall a. Typeable a =&gt; a -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeOf"><span class="hs-identifier hs-var hs-var">typeOf</span></a></span></span><span> </span><span class="annot"><span class="annottext">a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span>
</span><span id="line-765"></span><span>
</span><span id="line-766"></span><span class="hs-comment">-- | Takes a value of type @a@ and returns a concrete representation</span><span>
</span><span id="line-767"></span><span class="hs-comment">-- of that type.</span><span>
</span><span id="line-768"></span><span class="hs-comment">--</span><span>
</span><span id="line-769"></span><span class="hs-comment">-- @since 4.7.0.0</span><span>
</span><span id="line-770"></span><span class="annot"><a href="Data.Typeable.Internal.html#someTypeRep"><span class="hs-identifier hs-type">someTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537269"><span class="annot"><a href="#local-6989586621679537269"><span class="hs-identifier hs-type">proxy</span></a></span></span><span> </span><span id="local-6989586621679537270"><span class="annot"><a href="#local-6989586621679537270"><span class="hs-identifier hs-type">a</span></a></span></span><span class="hs-operator">.</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537270"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="#local-6989586621679537269"><span class="hs-identifier hs-type">proxy</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537270"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span>
</span><span id="line-771"></span><span id="someTypeRep"><span class="annot"><span class="annottext">someTypeRep :: forall {k} (proxy :: k -&gt; *) (a :: k).
Typeable a =&gt;
proxy a -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#someTypeRep"><span class="hs-identifier hs-var hs-var">someTypeRep</span></a></span></span><span> </span><span class="annot"><span class="annottext">proxy a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep a
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537270"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-772"></span><span class="hs-pragma">{-# INLINE</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-pragma hs-type">typeRep</span></a></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-773"></span><span>
</span><span id="line-774"></span><span class="annot"><a href="Data.Typeable.Internal.html#someTypeRepFingerprint"><span class="hs-identifier hs-type">someTypeRepFingerprint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-775"></span><span id="someTypeRepFingerprint"><span class="annot"><span class="annottext">someTypeRepFingerprint :: SomeTypeRep -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#someTypeRepFingerprint"><span class="hs-identifier hs-var hs-var">someTypeRepFingerprint</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536580"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536580"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536580"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-776"></span><span>
</span><span id="line-777"></span><span class="hs-comment">----------------- Showing TypeReps --------------------</span><span>
</span><span id="line-778"></span><span>
</span><span id="line-779"></span><span class="hs-comment">-- This follows roughly the precedence structure described in Note [Precedence</span><span>
</span><span id="line-780"></span><span class="hs-comment">-- in types].</span><span>
</span><span id="line-781"></span><span id="local-6989586621679537445"><span id="local-6989586621679537446"><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679536575"><span id="local-6989586621679536577"><span class="annot"><a href="GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679537445"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537446"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-782"></span><span>    </span><span id="local-6989586621679536573"><span class="annot"><span class="annottext">showsPrec :: KindBndr -&gt; TypeRep a -&gt; String -&gt; String
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var hs-var hs-var hs-var">showsPrec</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; TypeRep a -&gt; String -&gt; String
forall k (a :: k). KindBndr -&gt; TypeRep a -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showTypeable"><span class="hs-identifier hs-var">showTypeable</span></a></span></span></span><span>
</span><span id="line-783"></span><span>
</span><span id="line-784"></span><span>
</span><span id="line-785"></span><span id="local-6989586621679536569"><span id="local-6989586621679536570"><span class="annot"><a href="Data.Typeable.Internal.html#showTypeable"><span class="hs-identifier hs-type">showTypeable</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int"><span class="hs-identifier hs-type">Int</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="#local-6989586621679536570"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679536569"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Show.html#ShowS"><span class="hs-identifier hs-type">ShowS</span></a></span></span></span><span>
</span><span id="line-786"></span><span id="showTypeable"><span class="annot"><span class="annottext">showTypeable :: forall k (a :: k). KindBndr -&gt; TypeRep a -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showTypeable"><span class="hs-identifier hs-var hs-var">showTypeable</span></a></span></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'*'</span></span><span>
</span><span id="line-787"></span><span class="annot"><a href="Data.Typeable.Internal.html#showTypeable"><span class="hs-identifier hs-var">showTypeable</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621679536558"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536558"><span class="hs-identifier hs-var">rep</span></a></span></span><span>
</span><span id="line-788"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Bool
</span><a href="Data.Typeable.Internal.html#isListTyCon"><span class="hs-identifier hs-var">isListTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536556"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span id="local-6989586621679536555"><span class="annot"><span class="annottext">SomeTypeRep
</span><a href="#local-6989586621679536555"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536554"><span class="hs-identifier hs-var">tys</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-789"></span><span>    </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'['</span></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">SomeTypeRep -&gt; String -&gt; String
forall a. Show a =&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#shows"><span class="hs-identifier hs-var">shows</span></a></span><span> </span><span class="annot"><span class="annottext">SomeTypeRep
</span><a href="#local-6989586621679536555"><span class="hs-identifier hs-var">ty</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">']'</span></span><span>
</span><span id="line-790"></span><span>
</span><span id="line-791"></span><span>    </span><span class="hs-comment">-- Take care only to render saturated tuple tycon applications</span><span>
</span><span id="line-792"></span><span>    </span><span class="hs-comment">-- with tuple notation (#14341).</span><span>
</span><span id="line-793"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; Bool
</span><a href="Data.Typeable.Internal.html#isTupleTyCon"><span class="hs-identifier hs-var">isTupleTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536556"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-794"></span><span>    </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">* :~~: k
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep (*)
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep (*) -&gt; TypeRep k -&gt; Maybe (* :~~: k)
forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-operator hs-var">`eqTypeRep`</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; TypeRep k
forall k (a :: k). TypeRep a -&gt; TypeRep k
</span><a href="Data.Typeable.Internal.html#typeRepKind"><span class="hs-identifier hs-var">typeRepKind</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536558"><span class="hs-identifier hs-var">rep</span></a></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-795"></span><span>    </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'('</span></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; [SomeTypeRep] -&gt; String -&gt; String
forall a. Show a =&gt; (String -&gt; String) -&gt; [a] -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showArgs"><span class="hs-identifier hs-var">showArgs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">','</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536554"><span class="hs-identifier hs-var">tys</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">')'</span></span><span>
</span><span id="line-796"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536556"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536556"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679536554"><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536554"><span class="hs-identifier hs-var">tys</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; (TyCon, [SomeTypeRep])
forall {k} (a :: k). TypeRep a -&gt; (TyCon, [SomeTypeRep])
</span><a href="Data.Typeable.Internal.html#splitApps"><span class="hs-identifier hs-var">splitApps</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536558"><span class="hs-identifier hs-var">rep</span></a></span><span>
</span><span id="line-797"></span><span class="annot"><a href="Data.Typeable.Internal.html#showTypeable"><span class="hs-identifier hs-var">showTypeable</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trTyCon :: forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#trTyCon"><span class="hs-identifier hs-var">trTyCon</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536549"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536549"><span class="hs-identifier hs-var">tycon</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trKindVars :: forall k (a :: k). TypeRep a -&gt; [SomeTypeRep]
</span><a href="Data.Typeable.Internal.html#trKindVars"><span class="hs-identifier hs-var">trKindVars</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-798"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showTyCon"><span class="hs-identifier hs-var">showTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536549"><span class="hs-identifier hs-var">tycon</span></a></span><span>
</span><span id="line-799"></span><span class="annot"><a href="Data.Typeable.Internal.html#showTypeable"><span class="hs-identifier hs-var">showTypeable</span></a></span><span> </span><span id="local-6989586621679536547"><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536547"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trTyCon :: forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#trTyCon"><span class="hs-identifier hs-var">trTyCon</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536546"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536546"><span class="hs-identifier hs-var">tycon</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trKindVars :: forall k (a :: k). TypeRep a -&gt; [SomeTypeRep]
</span><a href="Data.Typeable.Internal.html#trKindVars"><span class="hs-identifier hs-var">trKindVars</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536545"><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536545"><span class="hs-identifier hs-var">args</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-800"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; (String -&gt; String) -&gt; String -&gt; String
</span><a href="GHC.Show.html#showParen"><span class="hs-identifier hs-var">showParen</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536547"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; KindBndr -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3E"><span class="hs-operator hs-var">&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">9</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">((String -&gt; String) -&gt; String -&gt; String)
-&gt; (String -&gt; String) -&gt; String -&gt; String
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-801"></span><span>    </span><span class="annot"><span class="annottext">TyCon -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showTyCon"><span class="hs-identifier hs-var">showTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536546"><span class="hs-identifier hs-var">tycon</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span>
</span><span id="line-802"></span><span>    </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">' '</span></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span>
</span><span id="line-803"></span><span>    </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; [SomeTypeRep] -&gt; String -&gt; String
forall a. Show a =&gt; (String -&gt; String) -&gt; [a] -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showArgs"><span class="hs-identifier hs-var">showArgs</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">' '</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536545"><span class="hs-identifier hs-var">args</span></a></span><span>
</span><span id="line-804"></span><span class="annot"><a href="Data.Typeable.Internal.html#showTypeable"><span class="hs-identifier hs-var">showTypeable</span></a></span><span> </span><span id="local-6989586621679536542"><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536542"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trFunArg :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#trFunArg"><span class="hs-identifier hs-var">trFunArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536535"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536535"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trFunRes :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep b
</span><a href="Data.Typeable.Internal.html#trFunRes"><span class="hs-identifier hs-var">trFunRes</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536534"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536534"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-805"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; (String -&gt; String) -&gt; String -&gt; String
</span><a href="GHC.Show.html#showParen"><span class="hs-identifier hs-var">showParen</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536542"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; KindBndr -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3E"><span class="hs-operator hs-var">&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">8</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">((String -&gt; String) -&gt; String -&gt; String)
-&gt; (String -&gt; String) -&gt; String -&gt; String
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-806"></span><span>    </span><span class="annot"><span class="annottext">KindBndr -&gt; TypeRep a -&gt; String -&gt; String
forall a. Show a =&gt; KindBndr -&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var">showsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">9</span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536535"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
</span><a href="GHC.Show.html#showString"><span class="hs-identifier hs-var">showString</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot; -&gt; &quot;</span></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; TypeRep b -&gt; String -&gt; String
forall a. Show a =&gt; KindBndr -&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var">showsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">8</span></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536534"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-807"></span><span class="annot"><a href="Data.Typeable.Internal.html#showTypeable"><span class="hs-identifier hs-var">showTypeable</span></a></span><span> </span><span id="local-6989586621679536532"><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536532"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppFun :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r1
</span><a href="Data.Typeable.Internal.html#trAppFun"><span class="hs-identifier hs-var">trAppFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536526"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536526"><span class="hs-identifier hs-var">f</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trAppArg :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r2
</span><a href="Data.Typeable.Internal.html#trAppArg"><span class="hs-identifier hs-var">trAppArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536525"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536525"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-808"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; (String -&gt; String) -&gt; String -&gt; String
</span><a href="GHC.Show.html#showParen"><span class="hs-identifier hs-var">showParen</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536532"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; KindBndr -&gt; Bool
forall a. Ord a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3E"><span class="hs-operator hs-var">&gt;</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">9</span></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">((String -&gt; String) -&gt; String -&gt; String)
-&gt; (String -&gt; String) -&gt; String -&gt; String
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span>
</span><span id="line-809"></span><span>    </span><span class="annot"><span class="annottext">KindBndr -&gt; TypeRep a -&gt; String -&gt; String
forall a. Show a =&gt; KindBndr -&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var">showsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">8</span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536526"><span class="hs-identifier hs-var">f</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span>
</span><span id="line-810"></span><span>    </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; String
</span><a href="GHC.Show.html#showChar"><span class="hs-identifier hs-var">showChar</span></a></span><span> </span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">' '</span></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span>
</span><span id="line-811"></span><span>    </span><span class="annot"><span class="annottext">KindBndr -&gt; TypeRep b -&gt; String -&gt; String
forall a. Show a =&gt; KindBndr -&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var">showsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">10</span></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536525"><span class="hs-identifier hs-var">x</span></a></span><span>
</span><span id="line-812"></span><span>
</span><span id="line-813"></span><span class="hs-comment">-- | @since 4.10.0.0</span><span>
</span><span id="line-814"></span><span class="hs-keyword">instance</span><span> </span><span id="local-6989586621679536520"><span id="local-6989586621679536522"><span class="annot"><a href="GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span></span></span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-815"></span><span>  </span><span id="local-6989586621679536519"><span class="annot"><span class="annottext">showsPrec :: KindBndr -&gt; SomeTypeRep -&gt; String -&gt; String
</span><a href="#local-6989586621679536519"><span class="hs-identifier hs-var hs-var hs-var hs-var">showsPrec</span></a></span></span><span> </span><span id="local-6989586621679536518"><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536518"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536516"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536516"><span class="hs-identifier hs-var">ty</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; TypeRep a -&gt; String -&gt; String
forall a. Show a =&gt; KindBndr -&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var">showsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><a href="#local-6989586621679536518"><span class="hs-identifier hs-var">p</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536516"><span class="hs-identifier hs-var">ty</span></a></span><span>
</span><span id="line-816"></span><span>
</span><span id="line-817"></span><span id="local-6989586621679537255"><span class="annot"><a href="Data.Typeable.Internal.html#splitApps"><span class="hs-identifier hs-type">splitApps</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537255"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span></span><span>
</span><span id="line-818"></span><span id="splitApps"><span class="annot"><span class="annottext">splitApps :: forall {k} (a :: k). TypeRep a -&gt; (TyCon, [SomeTypeRep])
</span><a href="Data.Typeable.Internal.html#splitApps"><span class="hs-identifier hs-var hs-var">splitApps</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep] -&gt; TypeRep a -&gt; (TyCon, [SomeTypeRep])
forall {k} (a :: k).
[SomeTypeRep] -&gt; TypeRep a -&gt; (TyCon, [SomeTypeRep])
</span><a href="#local-6989586621679536515"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-819"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-820"></span><span>    </span><span id="local-6989586621679537241"><span class="annot"><a href="#local-6989586621679536515"><span class="hs-identifier hs-type">go</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537241"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span></span><span>
</span><span id="line-821"></span><span>    </span><span id="local-6989586621679536515"><span class="annot"><span class="annottext">go :: forall {k} (a :: k).
[SomeTypeRep] -&gt; TypeRep a -&gt; (TyCon, [SomeTypeRep])
</span><a href="#local-6989586621679536515"><span class="hs-identifier hs-var hs-var">go</span></a></span></span><span> </span><span id="local-6989586621679536514"><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536514"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrTyCon"><span class="hs-identifier hs-type">TrTyCon</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trTyCon :: forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#trTyCon"><span class="hs-identifier hs-var">trTyCon</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536513"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536513"><span class="hs-identifier hs-var">tc</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-822"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536513"><span class="hs-identifier hs-var">tc</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536514"><span class="hs-identifier hs-var">xs</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-823"></span><span>    </span><span class="annot"><a href="#local-6989586621679536515"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span id="local-6989586621679536512"><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536512"><span class="hs-identifier hs-var">xs</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrApp"><span class="hs-identifier hs-type">TrApp</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trAppFun :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r1
</span><a href="Data.Typeable.Internal.html#trAppFun"><span class="hs-identifier hs-var">trAppFun</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536510"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536510"><span class="hs-identifier hs-var">f</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trAppArg :: forall m k2 (r1 :: m -&gt; k2) (r2 :: m).
TypeRep (r1 r2) -&gt; TypeRep r2
</span><a href="Data.Typeable.Internal.html#trAppArg"><span class="hs-identifier hs-var">trAppArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536509"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536509"><span class="hs-identifier hs-var">x</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-824"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep] -&gt; TypeRep a -&gt; (TyCon, [SomeTypeRep])
forall {k} (a :: k).
[SomeTypeRep] -&gt; TypeRep a -&gt; (TyCon, [SomeTypeRep])
</span><a href="#local-6989586621679536515"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep b -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536509"><span class="hs-identifier hs-var">x</span></a></span><span> </span><span class="annot"><span class="annottext">SomeTypeRep -&gt; [SomeTypeRep] -&gt; [SomeTypeRep]
forall a. a -&gt; [a] -&gt; [a]
</span><a href="../../ghc-prim/src/GHC.Types.html#%3A"><span class="hs-glyph hs-var">:</span></a></span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><a href="#local-6989586621679536512"><span class="hs-identifier hs-var">xs</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536510"><span class="hs-identifier hs-var">f</span></a></span><span>
</span><span id="line-825"></span><span>    </span><span class="annot"><a href="#local-6989586621679536515"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="annot"><span class="annottext">trFunArg :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#trFunArg"><span class="hs-identifier hs-var">trFunArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536506"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536506"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trFunRes :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep b
</span><a href="Data.Typeable.Internal.html#trFunRes"><span class="hs-identifier hs-var">trFunRes</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536505"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536505"><span class="hs-identifier hs-var">b</span></a></span></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trFunMul :: forall (m :: Multiplicity) a b. TypeRep (a %m -&gt; b) -&gt; TypeRep m
</span><a href="Data.Typeable.Internal.html#trFunMul"><span class="hs-identifier hs-var">trFunMul</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span id="local-6989586621679536504"><span class="annot"><span class="annottext">TypeRep m
</span><a href="#local-6989586621679536504"><span class="hs-identifier hs-var">mul</span></a></span></span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-826"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="annot"><span class="annottext">'Many :~~: m
</span><a href="Data.Type.Equality.html#HRefl"><span class="hs-identifier hs-var">HRefl</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many -&gt; TypeRep m -&gt; Maybe ('Many :~~: m)
forall k1 k2 (a :: k1) (b :: k2).
TypeRep a -&gt; TypeRep b -&gt; Maybe (a :~~: b)
</span><a href="Data.Typeable.Internal.html#eqTypeRep"><span class="hs-identifier hs-var">eqTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'Many
</span><a href="Data.Typeable.Internal.html#trMany"><span class="hs-identifier hs-var">trMany</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep m
</span><a href="#local-6989586621679536504"><span class="hs-identifier hs-var">mul</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#funTyCon"><span class="hs-identifier hs-var">funTyCon</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TypeRep a -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536506"><span class="hs-identifier hs-var">a</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TypeRep b -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536505"><span class="hs-identifier hs-var">b</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-827"></span><span>      </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; (TyCon, [SomeTypeRep])
forall a. String -&gt; a
</span><a href="GHC.Err.html#errorWithoutStackTrace"><span class="hs-identifier hs-var">errorWithoutStackTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Data.Typeable.Internal.splitApps: Only unrestricted functions are supported&quot;</span></span><span>
</span><span id="line-828"></span><span>    </span><span class="annot"><a href="#local-6989586621679536515"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><span class="hs-identifier">_</span></span><span>  </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span> </span><span class="hs-special">{</span><span class="hs-special">}</span><span class="hs-special">)</span><span>
</span><span id="line-829"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; (TyCon, [SomeTypeRep])
forall a. String -&gt; a
</span><a href="GHC.Err.html#errorWithoutStackTrace"><span class="hs-identifier hs-var">errorWithoutStackTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Data.Typeable.Internal.splitApps: Impossible 1&quot;</span></span><span>
</span><span id="line-830"></span><span>    </span><span class="annot"><a href="#local-6989586621679536515"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#tyConTYPE"><span class="hs-identifier hs-var">tyConTYPE</span></a></span><span class="hs-special">,</span><span> </span><span class="hs-special">[</span><span class="annot"><span class="annottext">TypeRep 'LiftedRep -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep 'LiftedRep
</span><a href="Data.Typeable.Internal.html#trLiftedRep"><span class="hs-identifier hs-var">trLiftedRep</span></a></span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-831"></span><span>    </span><span class="annot"><a href="#local-6989586621679536515"><span class="hs-identifier hs-var">go</span></a></span><span> </span><span class="annot"><span class="annottext">[SomeTypeRep]
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="Data.Typeable.Internal.html#TrType"><span class="hs-identifier hs-var">TrType</span></a></span><span>
</span><span id="line-832"></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; (TyCon, [SomeTypeRep])
forall a. String -&gt; a
</span><a href="GHC.Err.html#errorWithoutStackTrace"><span class="hs-identifier hs-var">errorWithoutStackTrace</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Data.Typeable.Internal.splitApps: Impossible 2&quot;</span></span><span>
</span><span id="line-833"></span><span>
</span><span id="line-834"></span><span class="hs-comment">-- This is incredibly shady! We don't really want to do this here; we</span><span>
</span><span id="line-835"></span><span class="hs-comment">-- should really have the compiler reveal the TYPE TyCon directly</span><span>
</span><span id="line-836"></span><span class="hs-comment">-- somehow. We need to construct this by hand because otherwise</span><span>
</span><span id="line-837"></span><span class="hs-comment">-- we end up with horrible and somewhat mysterious loops trying to calculate</span><span>
</span><span id="line-838"></span><span class="hs-comment">-- typeRep @TYPE. For the moment, we use the fact that we can get the proper</span><span>
</span><span id="line-839"></span><span class="hs-comment">-- name of the ghc-prim package from the TyCon of LiftedRep (which we can</span><span>
</span><span id="line-840"></span><span class="hs-comment">-- produce a TypeRep for without difficulty), and then just substitute in the</span><span>
</span><span id="line-841"></span><span class="hs-comment">-- appropriate module and constructor names.</span><span>
</span><span id="line-842"></span><span class="hs-comment">--</span><span>
</span><span id="line-843"></span><span class="hs-comment">-- The ticket to find a better way to deal with this is</span><span>
</span><span id="line-844"></span><span class="hs-comment">-- #14480.</span><span>
</span><span id="line-845"></span><span class="annot"><a href="Data.Typeable.Internal.html#tyConTYPE"><span class="hs-identifier hs-type">tyConTYPE</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-846"></span><span id="tyConTYPE"><span class="annot"><span class="annottext">tyConTYPE :: TyCon
</span><a href="Data.Typeable.Internal.html#tyConTYPE"><span class="hs-identifier hs-var hs-var">tyConTYPE</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String -&gt; KindBndr -&gt; KindRep -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#mkTyCon"><span class="hs-identifier hs-var">mkTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; String
</span><a href="Data.Typeable.Internal.html#tyConPackage"><span class="hs-identifier hs-var">tyConPackage</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536494"><span class="hs-identifier hs-var">liftedRepTyCon</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;GHC.Prim&quot;</span></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;TYPE&quot;</span></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">0</span></span><span>
</span><span id="line-847"></span><span>       </span><span class="hs-special">(</span><span class="annot"><span class="annottext">KindRep -&gt; KindRep -&gt; KindRep
</span><a href="../../ghc-prim/src/GHC.Types.html#KindRepFun"><span class="hs-identifier hs-var">KindRepFun</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; [KindRep] -&gt; KindRep
</span><a href="../../ghc-prim/src/GHC.Types.html#KindRepTyConApp"><span class="hs-identifier hs-var">KindRepTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536494"><span class="hs-identifier hs-var">liftedRepTyCon</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">RuntimeRep -&gt; KindRep
</span><a href="../../ghc-prim/src/GHC.Types.html#KindRepTYPE"><span class="hs-identifier hs-var">KindRepTYPE</span></a></span><span> </span><span class="annot"><span class="annottext">RuntimeRep
</span><a href="../../ghc-prim/src/GHC.Types.html#LiftedRep"><span class="hs-identifier hs-var">LiftedRep</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-848"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-849"></span><span>    </span><span id="local-6989586621679536494"><span class="annot"><span class="annottext">liftedRepTyCon :: TyCon
</span><a href="#local-6989586621679536494"><span class="hs-identifier hs-var hs-var">liftedRepTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep RuntimeRep -&gt; TyCon
forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">forall a. Typeable a =&gt; TypeRep a
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-850"></span><span>
</span><span id="line-851"></span><span class="annot"><a href="Data.Typeable.Internal.html#funTyCon"><span class="hs-identifier hs-type">funTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-852"></span><span id="funTyCon"><span class="annot"><span class="annottext">funTyCon :: TyCon
</span><a href="Data.Typeable.Internal.html#funTyCon"><span class="hs-identifier hs-var hs-var">funTyCon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep (-&gt;) -&gt; TyCon
forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">forall {k} (a :: k). Typeable a =&gt; TypeRep a
forall (a :: * -&gt; * -&gt; *). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="hs-glyph">-&gt;</span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-853"></span><span>
</span><span id="line-854"></span><span class="annot"><a href="Data.Typeable.Internal.html#isListTyCon"><span class="hs-identifier hs-type">isListTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Bool"><span class="hs-identifier hs-type">Bool</span></a></span><span>
</span><span id="line-855"></span><span id="isListTyCon"><span class="annot"><span class="annottext">isListTyCon :: TyCon -&gt; Bool
</span><a href="Data.Typeable.Internal.html#isListTyCon"><span class="hs-identifier hs-var hs-var">isListTyCon</span></a></span></span><span> </span><span id="local-6989586621679536492"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536492"><span class="hs-identifier hs-var">tc</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536492"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; TyCon -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><a href="../../ghc-prim/src/GHC.Classes.html#%3D%3D"><span class="hs-operator hs-var">==</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep [] -&gt; TyCon
forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeRep []
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span class="hs-special">)</span><span>
</span><span id="line-856"></span><span>
</span><span id="line-857"></span><span class="annot"><a href="Data.Typeable.Internal.html#isTupleTyCon"><span class="hs-identifier hs-type">isTupleTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Bool"><span class="hs-identifier hs-type">Bool</span></a></span><span>
</span><span id="line-858"></span><span id="isTupleTyCon"><span class="annot"><span class="annottext">isTupleTyCon :: TyCon -&gt; Bool
</span><a href="Data.Typeable.Internal.html#isTupleTyCon"><span class="hs-identifier hs-var hs-var">isTupleTyCon</span></a></span></span><span> </span><span id="local-6989586621679536491"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536491"><span class="hs-identifier hs-var">tc</span></a></span></span><span>
</span><span id="line-859"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">'('</span></span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#%3A"><span class="hs-glyph hs-type">:</span></a></span><span class="annot"><span class="annottext">Char
</span><span class="hs-char">','</span></span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#%3A"><span class="hs-glyph hs-type">:</span></a></span><span class="annot"><span class="annottext">String
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; String
</span><a href="Data.Typeable.Internal.html#tyConName"><span class="hs-identifier hs-var">tyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536491"><span class="hs-identifier hs-var">tc</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../ghc-prim/src/GHC.Types.html#True"><span class="hs-identifier hs-var">True</span></a></span><span>
</span><span id="line-860"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../ghc-prim/src/GHC.Types.html#False"><span class="hs-identifier hs-var">False</span></a></span><span>
</span><span id="line-861"></span><span>
</span><span id="line-862"></span><span class="hs-comment">-- This is only an approximation. We don't have the general</span><span>
</span><span id="line-863"></span><span class="hs-comment">-- character-classification machinery here, so we just do our best.</span><span>
</span><span id="line-864"></span><span class="hs-comment">-- This should work for promoted Haskell 98 data constructors and</span><span>
</span><span id="line-865"></span><span class="hs-comment">-- for TypeOperators type constructors that begin with ASCII</span><span>
</span><span id="line-866"></span><span class="hs-comment">-- characters, but it will miss Unicode operators.</span><span>
</span><span id="line-867"></span><span class="hs-comment">--</span><span>
</span><span id="line-868"></span><span class="hs-comment">-- If we wanted to catch Unicode as well, we ought to consider moving</span><span>
</span><span id="line-869"></span><span class="hs-comment">-- GHC.Lexeme from ghc-boot-th to base. Then we could just say:</span><span>
</span><span id="line-870"></span><span class="hs-comment">--</span><span>
</span><span id="line-871"></span><span class="hs-comment">--   startsVarSym symb || startsConSym symb</span><span>
</span><span id="line-872"></span><span class="hs-comment">--</span><span>
</span><span id="line-873"></span><span class="hs-comment">-- But this is a fair deal of work just for one corner case, so I think I'll</span><span>
</span><span id="line-874"></span><span class="hs-comment">-- leave it like this unless someone shouts.</span><span>
</span><span id="line-875"></span><span class="annot"><a href="Data.Typeable.Internal.html#isOperatorTyCon"><span class="hs-identifier hs-type">isOperatorTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Bool"><span class="hs-identifier hs-type">Bool</span></a></span><span>
</span><span id="line-876"></span><span id="isOperatorTyCon"><span class="annot"><span class="annottext">isOperatorTyCon :: TyCon -&gt; Bool
</span><a href="Data.Typeable.Internal.html#isOperatorTyCon"><span class="hs-identifier hs-var hs-var">isOperatorTyCon</span></a></span></span><span> </span><span id="local-6989586621679536489"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536489"><span class="hs-identifier hs-var">tc</span></a></span></span><span>
</span><span id="line-877"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span id="local-6989586621679536488"><span class="annot"><span class="annottext">Char
</span><a href="#local-6989586621679536488"><span class="hs-identifier hs-var">symb</span></a></span></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#%3A"><span class="hs-glyph hs-type">:</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; String
</span><a href="Data.Typeable.Internal.html#tyConName"><span class="hs-identifier hs-var">tyConName</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536489"><span class="hs-identifier hs-var">tc</span></a></span><span>
</span><span id="line-878"></span><span>  </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Char
</span><a href="#local-6989586621679536488"><span class="hs-identifier hs-var">symb</span></a></span><span> </span><span class="annot"><span class="annottext">Char -&gt; String -&gt; Bool
forall a. Eq a =&gt; a -&gt; [a] -&gt; Bool
</span><a href="GHC.List.html#elem"><span class="hs-operator hs-var">`elem`</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;!#$%&amp;*+./&lt;=&gt;?@\\^|-~:&quot;</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../ghc-prim/src/GHC.Types.html#True"><span class="hs-identifier hs-var">True</span></a></span><span>
</span><span id="line-879"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span>                           </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../ghc-prim/src/GHC.Types.html#False"><span class="hs-identifier hs-var">False</span></a></span><span>
</span><span id="line-880"></span><span>
</span><span id="line-881"></span><span class="annot"><a href="Data.Typeable.Internal.html#showTyCon"><span class="hs-identifier hs-type">showTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Show.html#ShowS"><span class="hs-identifier hs-type">ShowS</span></a></span><span>
</span><span id="line-882"></span><span id="showTyCon"><span class="annot"><span class="annottext">showTyCon :: TyCon -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showTyCon"><span class="hs-identifier hs-var hs-var">showTyCon</span></a></span></span><span> </span><span id="local-6989586621679536487"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536487"><span class="hs-identifier hs-var">tycon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Bool -&gt; (String -&gt; String) -&gt; String -&gt; String
</span><a href="GHC.Show.html#showParen"><span class="hs-identifier hs-var">showParen</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; Bool
</span><a href="Data.Typeable.Internal.html#isOperatorTyCon"><span class="hs-identifier hs-var">isOperatorTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536487"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TyCon -&gt; String -&gt; String
forall a. Show a =&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#shows"><span class="hs-identifier hs-var">shows</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536487"><span class="hs-identifier hs-var">tycon</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-883"></span><span>
</span><span id="line-884"></span><span id="local-6989586621679537257"><span class="annot"><a href="Data.Typeable.Internal.html#showArgs"><span class="hs-identifier hs-type">showArgs</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Show.html#Show"><span class="hs-identifier hs-type">Show</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537257"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="GHC.Show.html#ShowS"><span class="hs-identifier hs-type">ShowS</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">[</span><span class="annot"><a href="#local-6989586621679537257"><span class="hs-identifier hs-type">a</span></a></span><span class="hs-special">]</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Show.html#ShowS"><span class="hs-identifier hs-type">ShowS</span></a></span></span><span>
</span><span id="line-885"></span><span id="showArgs"><span class="annot"><span class="annottext">showArgs :: forall a. Show a =&gt; (String -&gt; String) -&gt; [a] -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showArgs"><span class="hs-identifier hs-var hs-var">showArgs</span></a></span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-special">[</span><span class="hs-special">]</span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; String
forall a. a -&gt; a
</span><a href="GHC.Base.html#id"><span class="hs-identifier hs-var">id</span></a></span><span>
</span><span id="line-886"></span><span class="annot"><a href="Data.Typeable.Internal.html#showArgs"><span class="hs-identifier hs-var">showArgs</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String
</span><span class="hs-identifier">_</span></span><span>   </span><span class="hs-special">[</span><span id="local-6989586621679536481"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679536481"><span class="hs-identifier hs-var">a</span></a></span></span><span class="hs-special">]</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; a -&gt; String -&gt; String
forall a. Show a =&gt; KindBndr -&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var">showsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">10</span></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679536481"><span class="hs-identifier hs-var">a</span></a></span><span>
</span><span id="line-887"></span><span class="annot"><a href="Data.Typeable.Internal.html#showArgs"><span class="hs-identifier hs-var">showArgs</span></a></span><span> </span><span id="local-6989586621679536480"><span class="annot"><span class="annottext">String -&gt; String
</span><a href="#local-6989586621679536480"><span class="hs-identifier hs-var">sep</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536479"><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679536479"><span class="hs-identifier hs-var">a</span></a></span></span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#%3A"><span class="hs-glyph hs-type">:</span></a></span><span id="local-6989586621679536478"><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679536478"><span class="hs-keyword hs-var">as</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">KindBndr -&gt; a -&gt; String -&gt; String
forall a. Show a =&gt; KindBndr -&gt; a -&gt; String -&gt; String
</span><a href="GHC.Show.html#showsPrec"><span class="hs-identifier hs-var">showsPrec</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">10</span></span><span> </span><span class="annot"><span class="annottext">a
</span><a href="#local-6989586621679536479"><span class="hs-identifier hs-var">a</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String
</span><a href="#local-6989586621679536480"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; (String -&gt; String) -&gt; String -&gt; String
forall b c a. (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c
</span><a href="GHC.Base.html#."><span class="hs-operator hs-var">.</span></a></span><span> </span><span class="annot"><span class="annottext">(String -&gt; String) -&gt; [a] -&gt; String -&gt; String
forall a. Show a =&gt; (String -&gt; String) -&gt; [a] -&gt; String -&gt; String
</span><a href="Data.Typeable.Internal.html#showArgs"><span class="hs-identifier hs-var">showArgs</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String
</span><a href="#local-6989586621679536480"><span class="hs-identifier hs-var">sep</span></a></span><span> </span><span class="annot"><span class="annottext">[a]
</span><a href="#local-6989586621679536478"><span class="hs-keyword hs-var">as</span></a></span><span>
</span><span id="line-888"></span><span>
</span><span id="line-889"></span><span class="hs-comment">-- | Helper to fully evaluate 'TypeRep' for use as @NFData(rnf)@ implementation</span><span>
</span><span id="line-890"></span><span class="hs-comment">--</span><span>
</span><span id="line-891"></span><span class="hs-comment">-- @since 4.8.0.0</span><span>
</span><span id="line-892"></span><span id="local-6989586621679537221"><span class="annot"><a href="Data.Typeable.Internal.html#rnfTypeRep"><span class="hs-identifier hs-type">rnfTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537221"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span></span><span>
</span><span id="line-893"></span><span class="hs-comment">-- The TypeRep structure is almost entirely strict by definition. The</span><span>
</span><span id="line-894"></span><span class="hs-comment">-- fingerprinting and strict kind caching ensure that everything</span><span>
</span><span id="line-895"></span><span class="hs-comment">-- else is forced anyway. So we don't need to do anything special</span><span>
</span><span id="line-896"></span><span class="hs-comment">-- to reduce to normal form.</span><span>
</span><span id="line-897"></span><span id="rnfTypeRep"><span class="annot"><span class="annottext">rnfTypeRep :: forall {k} (a :: k). TypeRep a -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfTypeRep"><span class="hs-identifier hs-var hs-var">rnfTypeRep</span></a></span></span><span> </span><span class="hs-glyph">!</span><span class="annot"><span class="annottext">TypeRep a
</span><span class="hs-identifier">_</span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-898"></span><span>
</span><span id="line-899"></span><span class="hs-comment">-- | Helper to fully evaluate 'SomeTypeRep' for use as @NFData(rnf)@</span><span>
</span><span id="line-900"></span><span class="hs-comment">-- implementation</span><span>
</span><span id="line-901"></span><span class="hs-comment">--</span><span>
</span><span id="line-902"></span><span class="hs-comment">-- @since 4.10.0.0</span><span>
</span><span id="line-903"></span><span class="annot"><a href="Data.Typeable.Internal.html#rnfSomeTypeRep"><span class="hs-identifier hs-type">rnfSomeTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="hs-special">(</span><span class="hs-special">)</span><span>
</span><span id="line-904"></span><span id="rnfSomeTypeRep"><span class="annot"><span class="annottext">rnfSomeTypeRep :: SomeTypeRep -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfSomeTypeRep"><span class="hs-identifier hs-var hs-var">rnfSomeTypeRep</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span> </span><span id="local-6989586621679536477"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536477"><span class="hs-identifier hs-var">r</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; ()
forall {k} (a :: k). TypeRep a -&gt; ()
</span><a href="Data.Typeable.Internal.html#rnfTypeRep"><span class="hs-identifier hs-var">rnfTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536477"><span class="hs-identifier hs-var">r</span></a></span><span>
</span><span id="line-905"></span><span>
</span><span id="line-906"></span><span class="hs-comment">{- *********************************************************
*                                                          *
*       TyCon/TypeRep definitions for type literals        *
*              (Symbol and Nat)                            *
*                                                          *
********************************************************* -}</span><span>
</span><span id="line-912"></span><span>
</span><span id="line-913"></span><span class="hs-keyword">pattern</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#KindRepTypeLit"><span class="hs-identifier hs-type">KindRepTypeLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TypeLitSort"><span class="hs-identifier hs-type">TypeLitSort</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span>
</span><span id="line-914"></span><span class="hs-keyword">pattern</span><span> </span><span id="%24mKindRepTypeLit"><span id="%24bKindRepTypeLit"><span id="KindRepTypeLit"><span class="annot"><span class="annottext">$mKindRepTypeLit :: forall {r}.
KindRep -&gt; (TypeLitSort -&gt; String -&gt; r) -&gt; (Void# -&gt; r) -&gt; r
$bKindRepTypeLit :: TypeLitSort -&gt; String -&gt; KindRep
</span><a href="Data.Typeable.Internal.html#%24mKindRepTypeLit"><span class="hs-identifier hs-var hs-var hs-var hs-var">KindRepTypeLit</span></a></span></span></span></span><span> </span><span class="annot"><a href="#local-6989586621679536474"><span class="hs-identifier hs-type">sort</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679536473"><span class="hs-identifier hs-type">t</span></a></span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#getKindRepTypeLit"><span class="hs-identifier hs-type">getKindRepTypeLit</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-type">Just</span></a></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679536474"><span class="annot"><a href="#local-6989586621679536474"><span class="hs-identifier hs-var">sort</span></a></span></span><span class="hs-special">,</span><span> </span><span id="local-6989586621679536473"><span class="annot"><a href="#local-6989586621679536473"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-915"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-916"></span><span>    </span><span class="annot"><a href="Data.Typeable.Internal.html#KindRepTypeLit"><span class="hs-identifier hs-var">KindRepTypeLit</span></a></span><span> </span><span id="local-6989586621679536471"><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536471"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span id="local-6989586621679536470"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536470"><span class="hs-identifier hs-var">t</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeLitSort -&gt; String -&gt; KindRep
</span><a href="../../ghc-prim/src/GHC.Types.html#KindRepTypeLitD"><span class="hs-identifier hs-var">KindRepTypeLitD</span></a></span><span> </span><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536471"><span class="hs-identifier hs-var">sort</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536470"><span class="hs-identifier hs-var">t</span></a></span><span>
</span><span id="line-917"></span><span>
</span><span id="line-918"></span><span class="hs-pragma">{-# COMPLETE</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTyConApp"><span class="hs-pragma hs-type">KindRepTyConApp</span></a></span><span class="hs-pragma">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepVar"><span class="hs-pragma hs-type">KindRepVar</span></a></span><span class="hs-pragma">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepApp"><span class="hs-pragma hs-type">KindRepApp</span></a></span><span class="hs-pragma">,</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepFun"><span class="hs-pragma hs-type">KindRepFun</span></a></span><span class="hs-pragma">,</span><span>
</span><span id="line-919"></span><span>             </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTYPE"><span class="hs-pragma hs-type">KindRepTYPE</span></a></span><span class="hs-pragma">,</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#KindRepTypeLit"><span class="hs-pragma hs-type">KindRepTypeLit</span></a></span><span> </span><span class="hs-pragma">#-}</span><span>
</span><span id="line-920"></span><span>
</span><span id="line-921"></span><span class="annot"><a href="Data.Typeable.Internal.html#getKindRepTypeLit"><span class="hs-identifier hs-type">getKindRepTypeLit</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Maybe.html#Maybe"><span class="hs-identifier hs-type">Maybe</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TypeLitSort"><span class="hs-identifier hs-type">TypeLitSort</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-922"></span><span id="getKindRepTypeLit"><span class="annot"><span class="annottext">getKindRepTypeLit :: KindRep -&gt; Maybe (TypeLitSort, String)
</span><a href="Data.Typeable.Internal.html#getKindRepTypeLit"><span class="hs-identifier hs-var hs-var">getKindRepTypeLit</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTypeLitS"><span class="hs-identifier hs-type">KindRepTypeLitS</span></a></span><span> </span><span id="local-6989586621679536469"><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536469"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span id="local-6989586621679536468"><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536468"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TypeLitSort, String) -&gt; Maybe (TypeLitSort, String)
forall a. a -&gt; Maybe a
</span><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536469"><span class="hs-identifier hs-var">sort</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">Addr# -&gt; String
</span><a href="../../ghc-prim/src/GHC.CString.html#unpackCStringUtf8%23"><span class="hs-identifier hs-var">unpackCStringUtf8#</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536468"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-923"></span><span class="annot"><a href="Data.Typeable.Internal.html#getKindRepTypeLit"><span class="hs-identifier hs-var">getKindRepTypeLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRepTypeLitD"><span class="hs-identifier hs-type">KindRepTypeLitD</span></a></span><span> </span><span id="local-6989586621679536467"><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536467"><span class="hs-identifier hs-var">sort</span></a></span></span><span> </span><span id="local-6989586621679536466"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536466"><span class="hs-identifier hs-var">t</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(TypeLitSort, String) -&gt; Maybe (TypeLitSort, String)
forall a. a -&gt; Maybe a
</span><a href="GHC.Maybe.html#Just"><span class="hs-identifier hs-var">Just</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">TypeLitSort
</span><a href="#local-6989586621679536467"><span class="hs-identifier hs-var">sort</span></a></span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536466"><span class="hs-identifier hs-var">t</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-924"></span><span class="annot"><a href="Data.Typeable.Internal.html#getKindRepTypeLit"><span class="hs-identifier hs-var">getKindRepTypeLit</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><span class="hs-identifier">_</span></span><span>                        </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Maybe (TypeLitSort, String)
forall a. Maybe a
</span><a href="GHC.Maybe.html#Nothing"><span class="hs-identifier hs-var">Nothing</span></a></span><span>
</span><span id="line-925"></span><span>
</span><span id="line-926"></span><span class="hs-comment">-- | Exquisitely unsafe.</span><span>
</span><span id="line-927"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTyCon%23"><span class="hs-identifier hs-type">mkTyCon#</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Addr%23"><span class="hs-identifier hs-type">Addr#</span></a></span><span>       </span><span class="hs-comment">-- ^ package name</span><span>
</span><span id="line-928"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Addr%23"><span class="hs-identifier hs-type">Addr#</span></a></span><span>       </span><span class="hs-comment">-- ^ module name</span><span>
</span><span id="line-929"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Addr%23"><span class="hs-identifier hs-type">Addr#</span></a></span><span>       </span><span class="hs-comment">-- ^ the name of the type constructor</span><span>
</span><span id="line-930"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Int%23"><span class="hs-identifier hs-type">Int#</span></a></span><span>        </span><span class="hs-comment">-- ^ number of kind variables</span><span>
</span><span id="line-931"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span>     </span><span class="hs-comment">-- ^ kind representation</span><span>
</span><span id="line-932"></span><span>         </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>       </span><span class="hs-comment">-- ^ A unique 'TyCon' object</span><span>
</span><span id="line-933"></span><span id="mkTyCon%23"><span class="annot"><span class="annottext">mkTyCon# :: Addr# -&gt; Addr# -&gt; Addr# -&gt; Int# -&gt; KindRep -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#mkTyCon%23"><span class="hs-identifier hs-var hs-var">mkTyCon#</span></a></span></span><span> </span><span id="local-6989586621679536465"><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536465"><span class="hs-identifier hs-var">pkg</span></a></span></span><span> </span><span id="local-6989586621679536464"><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536464"><span class="hs-identifier hs-var">modl</span></a></span></span><span> </span><span id="local-6989586621679536463"><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536463"><span class="hs-identifier hs-var">name</span></a></span></span><span> </span><span id="local-6989586621679536462"><span class="annot"><span class="annottext">Int#
</span><a href="#local-6989586621679536462"><span class="hs-identifier hs-var">n_kinds</span></a></span></span><span> </span><span id="local-6989586621679536461"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536461"><span class="hs-identifier hs-var">kind_rep</span></a></span></span><span>
</span><span id="line-934"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Word.html#W64%23"><span class="hs-identifier hs-type">W64#</span></a></span><span> </span><span id="local-6989586621679536460"><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679536460"><span class="hs-identifier hs-var">hi</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Word.html#W64%23"><span class="hs-identifier hs-type">W64#</span></a></span><span> </span><span id="local-6989586621679536459"><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679536459"><span class="hs-identifier hs-var">lo</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536458"><span class="hs-identifier hs-var">fingerprint</span></a></span><span>
</span><span id="line-935"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Word# -&gt; Word# -&gt; Module -&gt; TrName -&gt; Int# -&gt; KindRep -&gt; TyCon
</span><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-var">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679536460"><span class="hs-identifier hs-var">hi</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679536459"><span class="hs-identifier hs-var">lo</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621679536457"><span class="hs-identifier hs-var">mod</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Addr# -&gt; TrName
</span><a href="../../ghc-prim/src/GHC.Types.html#TrNameS"><span class="hs-identifier hs-var">TrNameS</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536463"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int#
</span><a href="#local-6989586621679536462"><span class="hs-identifier hs-var">n_kinds</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536461"><span class="hs-identifier hs-var">kind_rep</span></a></span><span>
</span><span id="line-936"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-937"></span><span>    </span><span id="local-6989586621679536457"><span class="annot"><span class="annottext">mod :: Module
</span><a href="#local-6989586621679536457"><span class="hs-identifier hs-var hs-var">mod</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrName -&gt; TrName -&gt; Module
</span><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier hs-var">Module</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Addr# -&gt; TrName
</span><a href="../../ghc-prim/src/GHC.Types.html#TrNameS"><span class="hs-identifier hs-var">TrNameS</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536465"><span class="hs-identifier hs-var">pkg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Addr# -&gt; TrName
</span><a href="../../ghc-prim/src/GHC.Types.html#TrNameS"><span class="hs-identifier hs-var">TrNameS</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536464"><span class="hs-identifier hs-var">modl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-938"></span><span>    </span><span class="annot"><a href="#local-6989586621679536458"><span class="hs-identifier hs-type">fingerprint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-939"></span><span>    </span><span id="local-6989586621679536458"><span class="annot"><span class="annottext">fingerprint :: Fingerprint
</span><a href="#local-6989586621679536458"><span class="hs-identifier hs-var hs-var">fingerprint</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#mkTyConFingerprint"><span class="hs-identifier hs-var">mkTyConFingerprint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Addr# -&gt; String
</span><a href="../../ghc-prim/src/GHC.CString.html#unpackCStringUtf8%23"><span class="hs-identifier hs-var">unpackCStringUtf8#</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536465"><span class="hs-identifier hs-var">pkg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-940"></span><span>                                     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Addr# -&gt; String
</span><a href="../../ghc-prim/src/GHC.CString.html#unpackCStringUtf8%23"><span class="hs-identifier hs-var">unpackCStringUtf8#</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536464"><span class="hs-identifier hs-var">modl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-941"></span><span>                                     </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Addr# -&gt; String
</span><a href="../../ghc-prim/src/GHC.CString.html#unpackCStringUtf8%23"><span class="hs-identifier hs-var">unpackCStringUtf8#</span></a></span><span> </span><span class="annot"><span class="annottext">Addr#
</span><a href="#local-6989586621679536463"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-942"></span><span>
</span><span id="line-943"></span><span class="hs-comment">-- it is extremely important that this fingerprint computation</span><span>
</span><span id="line-944"></span><span class="hs-comment">-- remains in sync with that in GHC.Tc.Instance.Typeable to ensure that type</span><span>
</span><span id="line-945"></span><span class="hs-comment">-- equality is correct.</span><span>
</span><span id="line-946"></span><span>
</span><span id="line-947"></span><span class="hs-comment">-- | Exquisitely unsafe.</span><span>
</span><span id="line-948"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTyCon"><span class="hs-identifier hs-type">mkTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>       </span><span class="hs-comment">-- ^ package name</span><span>
</span><span id="line-949"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>       </span><span class="hs-comment">-- ^ module name</span><span>
</span><span id="line-950"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span>       </span><span class="hs-comment">-- ^ the name of the type constructor</span><span>
</span><span id="line-951"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Int"><span class="hs-identifier hs-type">Int</span></a></span><span>         </span><span class="hs-comment">-- ^ number of kind variables</span><span>
</span><span id="line-952"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#KindRep"><span class="hs-identifier hs-type">KindRep</span></a></span><span>     </span><span class="hs-comment">-- ^ kind representation</span><span>
</span><span id="line-953"></span><span>        </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>        </span><span class="hs-comment">-- ^ A unique 'TyCon' object</span><span>
</span><span id="line-954"></span><span class="hs-comment">-- Used when the strings are dynamically allocated,</span><span>
</span><span id="line-955"></span><span class="hs-comment">-- eg from binary deserialisation</span><span>
</span><span id="line-956"></span><span id="mkTyCon"><span class="annot"><span class="annottext">mkTyCon :: String -&gt; String -&gt; String -&gt; KindBndr -&gt; KindRep -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#mkTyCon"><span class="hs-identifier hs-var hs-var">mkTyCon</span></a></span></span><span> </span><span id="local-6989586621679536455"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536455"><span class="hs-identifier hs-var">pkg</span></a></span></span><span> </span><span id="local-6989586621679536454"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536454"><span class="hs-identifier hs-var">modl</span></a></span></span><span> </span><span id="local-6989586621679536453"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536453"><span class="hs-identifier hs-var">name</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#I%23"><span class="hs-identifier hs-type">I#</span></a></span><span> </span><span id="local-6989586621679536452"><span class="annot"><span class="annottext">Int#
</span><a href="#local-6989586621679536452"><span class="hs-identifier hs-var">n_kinds</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621679536451"><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536451"><span class="hs-identifier hs-var">kind_rep</span></a></span></span><span>
</span><span id="line-957"></span><span>  </span><span class="hs-glyph">|</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Word.html#W64%23"><span class="hs-identifier hs-type">W64#</span></a></span><span> </span><span id="local-6989586621679536450"><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679536450"><span class="hs-identifier hs-var">hi</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Word.html#W64%23"><span class="hs-identifier hs-type">W64#</span></a></span><span> </span><span id="local-6989586621679536449"><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679536449"><span class="hs-identifier hs-var">lo</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">&lt;-</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536448"><span class="hs-identifier hs-var">fingerprint</span></a></span><span>
</span><span id="line-958"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Word# -&gt; Word# -&gt; Module -&gt; TrName -&gt; Int# -&gt; KindRep -&gt; TyCon
</span><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-var">TyCon</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679536450"><span class="hs-identifier hs-var">hi</span></a></span><span> </span><span class="annot"><span class="annottext">Word#
</span><a href="#local-6989586621679536449"><span class="hs-identifier hs-var">lo</span></a></span><span> </span><span class="annot"><span class="annottext">Module
</span><a href="#local-6989586621679536447"><span class="hs-identifier hs-var">mod</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; TrName
</span><a href="../../ghc-prim/src/GHC.Types.html#TrNameD"><span class="hs-identifier hs-var">TrNameD</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536453"><span class="hs-identifier hs-var">name</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Int#
</span><a href="#local-6989586621679536452"><span class="hs-identifier hs-var">n_kinds</span></a></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536451"><span class="hs-identifier hs-var">kind_rep</span></a></span><span>
</span><span id="line-959"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-960"></span><span>    </span><span id="local-6989586621679536447"><span class="annot"><span class="annottext">mod :: Module
</span><a href="#local-6989586621679536447"><span class="hs-identifier hs-var hs-var">mod</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrName -&gt; TrName -&gt; Module
</span><a href="../../ghc-prim/src/GHC.Types.html#Module"><span class="hs-identifier hs-var">Module</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; TrName
</span><a href="../../ghc-prim/src/GHC.Types.html#TrNameD"><span class="hs-identifier hs-var">TrNameD</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536455"><span class="hs-identifier hs-var">pkg</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; TrName
</span><a href="../../ghc-prim/src/GHC.Types.html#TrNameD"><span class="hs-identifier hs-var">TrNameD</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536454"><span class="hs-identifier hs-var">modl</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-961"></span><span>    </span><span class="annot"><a href="#local-6989586621679536448"><span class="hs-identifier hs-type">fingerprint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-962"></span><span>    </span><span id="local-6989586621679536448"><span class="annot"><span class="annottext">fingerprint :: Fingerprint
</span><a href="#local-6989586621679536448"><span class="hs-identifier hs-var hs-var">fingerprint</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#mkTyConFingerprint"><span class="hs-identifier hs-var">mkTyConFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536455"><span class="hs-identifier hs-var">pkg</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536454"><span class="hs-identifier hs-var">modl</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536453"><span class="hs-identifier hs-var">name</span></a></span><span>
</span><span id="line-963"></span><span>
</span><span id="line-964"></span><span class="hs-comment">-- This must match the computation done in GHC.Tc.Instance.Typeable.mkTyConRepTyConRHS.</span><span>
</span><span id="line-965"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTyConFingerprint"><span class="hs-identifier hs-type">mkTyConFingerprint</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-comment">-- ^ package name</span><span>
</span><span id="line-966"></span><span>                   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-comment">-- ^ module name</span><span>
</span><span id="line-967"></span><span>                   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-comment">-- ^ tycon name</span><span>
</span><span id="line-968"></span><span>                   </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Fingerprint.Type.html#Fingerprint"><span class="hs-identifier hs-type">Fingerprint</span></a></span><span>
</span><span id="line-969"></span><span id="mkTyConFingerprint"><span class="annot"><span class="annottext">mkTyConFingerprint :: String -&gt; String -&gt; String -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#mkTyConFingerprint"><span class="hs-identifier hs-var hs-var">mkTyConFingerprint</span></a></span></span><span> </span><span id="local-6989586621679536446"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536446"><span class="hs-identifier hs-var">pkg_name</span></a></span></span><span> </span><span id="local-6989586621679536445"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536445"><span class="hs-identifier hs-var">mod_name</span></a></span></span><span> </span><span id="local-6989586621679536444"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536444"><span class="hs-identifier hs-var">tycon_name</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-970"></span><span>        </span><span class="annot"><span class="annottext">[Fingerprint] -&gt; Fingerprint
</span><a href="GHC.Fingerprint.html#fingerprintFingerprints"><span class="hs-identifier hs-var">fingerprintFingerprints</span></a></span><span>
</span><span id="line-971"></span><span>        </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">String -&gt; Fingerprint
</span><a href="GHC.Fingerprint.html#fingerprintString"><span class="hs-identifier hs-var">fingerprintString</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536446"><span class="hs-identifier hs-var">pkg_name</span></a></span><span>
</span><span id="line-972"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; Fingerprint
</span><a href="GHC.Fingerprint.html#fingerprintString"><span class="hs-identifier hs-var">fingerprintString</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536445"><span class="hs-identifier hs-var">mod_name</span></a></span><span>
</span><span id="line-973"></span><span>        </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">String -&gt; Fingerprint
</span><a href="GHC.Fingerprint.html#fingerprintString"><span class="hs-identifier hs-var">fingerprintString</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536444"><span class="hs-identifier hs-var">tycon_name</span></a></span><span>
</span><span id="line-974"></span><span>        </span><span class="hs-special">]</span><span>
</span><span id="line-975"></span><span>
</span><span id="line-976"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTypeLitTyCon"><span class="hs-identifier hs-type">mkTypeLitTyCon</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-977"></span><span id="mkTypeLitTyCon"><span class="annot"><span class="annottext">mkTypeLitTyCon :: String -&gt; TyCon -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#mkTypeLitTyCon"><span class="hs-identifier hs-var hs-var">mkTypeLitTyCon</span></a></span></span><span> </span><span id="local-6989586621679536441"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536441"><span class="hs-identifier hs-var">name</span></a></span></span><span> </span><span id="local-6989586621679536440"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536440"><span class="hs-identifier hs-var">kind_tycon</span></a></span></span><span>
</span><span id="line-978"></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String -&gt; KindBndr -&gt; KindRep -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#mkTyCon"><span class="hs-identifier hs-var">mkTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;base&quot;</span></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;GHC.TypeLits&quot;</span></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536441"><span class="hs-identifier hs-var">name</span></a></span><span> </span><span class="annot"><span class="annottext">KindBndr
</span><span class="hs-number">0</span></span><span> </span><span class="annot"><span class="annottext">KindRep
</span><a href="#local-6989586621679536439"><span class="hs-identifier hs-var">kind</span></a></span><span>
</span><span id="line-979"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679536439"><span class="annot"><span class="annottext">kind :: KindRep
</span><a href="#local-6989586621679536439"><span class="hs-identifier hs-var hs-var">kind</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [KindRep] -&gt; KindRep
</span><a href="../../ghc-prim/src/GHC.Types.html#KindRepTyConApp"><span class="hs-identifier hs-var">KindRepTyConApp</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536440"><span class="hs-identifier hs-var">kind_tycon</span></a></span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-980"></span><span>
</span><span id="line-981"></span><span class="hs-comment">-- | Used to make `'Typeable' instance for things of kind Nat</span><span>
</span><span id="line-982"></span><span id="local-6989586621679537214"><span class="annot"><a href="Data.Typeable.Internal.html#typeNatTypeRep"><span class="hs-identifier hs-type">typeNatTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.TypeNats.html#KnownNat"><span class="hs-identifier hs-type">KnownNat</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537214"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Proxy%23"><span class="hs-identifier hs-type">Proxy#</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537214"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537214"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-983"></span><span id="typeNatTypeRep"><span class="annot"><span class="annottext">typeNatTypeRep :: forall (a :: Nat). KnownNat a =&gt; Proxy# a -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeNatTypeRep"><span class="hs-identifier hs-var hs-var">typeNatTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536433"><span class="annot"><span class="annottext">Proxy# a
</span><a href="#local-6989586621679536433"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; TyCon -&gt; TypeRep a
forall k (a :: k). Typeable k =&gt; String -&gt; TyCon -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeLitTypeRep"><span class="hs-identifier hs-var">typeLitTypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Natural -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy# a -&gt; Natural
forall (n :: Nat). KnownNat n =&gt; Proxy# n -&gt; Natural
</span><a href="GHC.TypeNats.html#natVal%27"><span class="hs-identifier hs-var">natVal'</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy# a
</span><a href="#local-6989586621679536433"><span class="hs-identifier hs-var">p</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#tcNat"><span class="hs-identifier hs-var">tcNat</span></a></span><span>
</span><span id="line-984"></span><span>
</span><span id="line-985"></span><span class="hs-comment">-- | Used to make `'Typeable' instance for things of kind Symbol</span><span>
</span><span id="line-986"></span><span id="local-6989586621679537209"><span class="annot"><a href="Data.Typeable.Internal.html#typeSymbolTypeRep"><span class="hs-identifier hs-type">typeSymbolTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.TypeLits.html#KnownSymbol"><span class="hs-identifier hs-type">KnownSymbol</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537209"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">=&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#Proxy%23"><span class="hs-identifier hs-type">Proxy#</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537209"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537209"><span class="hs-identifier hs-type">a</span></a></span></span><span>
</span><span id="line-987"></span><span id="typeSymbolTypeRep"><span class="annot"><span class="annottext">typeSymbolTypeRep :: forall (a :: Symbol). KnownSymbol a =&gt; Proxy# a -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeSymbolTypeRep"><span class="hs-identifier hs-var hs-var">typeSymbolTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536423"><span class="annot"><span class="annottext">Proxy# a
</span><a href="#local-6989586621679536423"><span class="hs-identifier hs-var">p</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; TyCon -&gt; TypeRep a
forall k (a :: k). Typeable k =&gt; String -&gt; TyCon -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeLitTypeRep"><span class="hs-identifier hs-var">typeLitTypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Proxy# a -&gt; String
forall (n :: Symbol). KnownSymbol n =&gt; Proxy# n -&gt; String
</span><a href="GHC.TypeLits.html#symbolVal%27"><span class="hs-identifier hs-var">symbolVal'</span></a></span><span> </span><span class="annot"><span class="annottext">Proxy# a
</span><a href="#local-6989586621679536423"><span class="hs-identifier hs-var">p</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#tcSymbol"><span class="hs-identifier hs-var">tcSymbol</span></a></span><span>
</span><span id="line-988"></span><span>
</span><span id="line-989"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTypeLitFromString"><span class="hs-identifier hs-type">mkTypeLitFromString</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TypeLitSort"><span class="hs-identifier hs-type">TypeLitSort</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-type">SomeTypeRep</span></a></span><span>
</span><span id="line-990"></span><span id="mkTypeLitFromString"><span class="annot"><span class="annottext">mkTypeLitFromString :: TypeLitSort -&gt; String -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#mkTypeLitFromString"><span class="hs-identifier hs-var hs-var">mkTypeLitFromString</span></a></span></span><span> </span><span class="annot"><span class="annottext">TypeLitSort
</span><a href="../../ghc-prim/src/GHC.Types.html#TypeLitSymbol"><span class="hs-identifier hs-var">TypeLitSymbol</span></a></span><span> </span><span id="local-6989586621679536421"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536421"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-991"></span><span>    </span><span class="annot"><span class="annottext">TypeRep Symbol -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep Symbol -&gt; SomeTypeRep) -&gt; TypeRep Symbol -&gt; SomeTypeRep
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; TyCon -&gt; TypeRep Symbol
forall k (a :: k). Typeable k =&gt; String -&gt; TyCon -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeLitTypeRep"><span class="hs-identifier hs-var">typeLitTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536421"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#tcSymbol"><span class="hs-identifier hs-var">tcSymbol</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-992"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTypeLitFromString"><span class="hs-identifier hs-var">mkTypeLitFromString</span></a></span><span> </span><span class="annot"><span class="annottext">TypeLitSort
</span><a href="../../ghc-prim/src/GHC.Types.html#TypeLitNat"><span class="hs-identifier hs-var">TypeLitNat</span></a></span><span> </span><span id="local-6989586621679536420"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536420"><span class="hs-identifier hs-var">s</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-993"></span><span>    </span><span class="annot"><span class="annottext">TypeRep Nat -&gt; SomeTypeRep
forall m (r1 :: m). TypeRep r1 -&gt; SomeTypeRep
</span><a href="Data.Typeable.Internal.html#SomeTypeRep"><span class="hs-identifier hs-var">SomeTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">(TypeRep Nat -&gt; SomeTypeRep) -&gt; TypeRep Nat -&gt; SomeTypeRep
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; TyCon -&gt; TypeRep Nat
forall k (a :: k). Typeable k =&gt; String -&gt; TyCon -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeLitTypeRep"><span class="hs-identifier hs-var">typeLitTypeRep</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536420"><span class="hs-identifier hs-var">s</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="Data.Typeable.Internal.html#tcNat"><span class="hs-identifier hs-var">tcNat</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Nat"><span class="hs-identifier hs-type">Nat</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-994"></span><span>
</span><span id="line-995"></span><span class="annot"><a href="Data.Typeable.Internal.html#tcSymbol"><span class="hs-identifier hs-type">tcSymbol</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-996"></span><span id="tcSymbol"><span class="annot"><span class="annottext">tcSymbol :: TyCon
</span><a href="Data.Typeable.Internal.html#tcSymbol"><span class="hs-identifier hs-var hs-var">tcSymbol</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep Symbol -&gt; TyCon
forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">forall a. Typeable a =&gt; TypeRep a
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Symbol"><span class="hs-identifier hs-type">Symbol</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-997"></span><span>
</span><span id="line-998"></span><span class="annot"><a href="Data.Typeable.Internal.html#tcNat"><span class="hs-identifier hs-type">tcNat</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span>
</span><span id="line-999"></span><span id="tcNat"><span class="annot"><span class="annottext">tcNat :: TyCon
</span><a href="Data.Typeable.Internal.html#tcNat"><span class="hs-identifier hs-var hs-var">tcNat</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep Nat -&gt; TyCon
forall k (a :: k). TypeRep a -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#typeRepTyCon"><span class="hs-identifier hs-var">typeRepTyCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">forall a. Typeable a =&gt; TypeRep a
forall {k} (a :: k). Typeable a =&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeRep"><span class="hs-identifier hs-var">typeRep</span></a></span><span> </span><span class="hs-glyph">@</span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Nat"><span class="hs-identifier hs-type">Nat</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1000"></span><span>
</span><span id="line-1001"></span><span class="hs-comment">-- | An internal function, to make representations for type literals.</span><span>
</span><span id="line-1002"></span><span class="annot"><a href="Data.Typeable.Internal.html#typeLitTypeRep"><span class="hs-identifier hs-type">typeLitTypeRep</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span id="local-6989586621679537212"><span class="annot"><a href="#local-6989586621679537212"><span class="hs-identifier hs-type">k</span></a></span></span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537211"><span class="annot"><a href="#local-6989586621679537211"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="#local-6989586621679537212"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span> </span><span class="hs-special">(</span><span class="annot"><a href="Data.Typeable.Internal.html#Typeable"><span class="hs-identifier hs-type">Typeable</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537212"><span class="hs-identifier hs-type">k</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=&gt;</span><span>
</span><span id="line-1003"></span><span>                  </span><span class="annot"><a href="GHC.Base.html#String"><span class="hs-identifier hs-type">String</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#TyCon"><span class="hs-identifier hs-type">TyCon</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537211"><span class="hs-identifier hs-type">a</span></a></span><span>
</span><span id="line-1004"></span><span id="typeLitTypeRep"><span class="annot"><span class="annottext">typeLitTypeRep :: forall k (a :: k). Typeable k =&gt; String -&gt; TyCon -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#typeLitTypeRep"><span class="hs-identifier hs-var hs-var">typeLitTypeRep</span></a></span></span><span> </span><span id="local-6989586621679536418"><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536418"><span class="hs-identifier hs-var">nm</span></a></span></span><span> </span><span id="local-6989586621679536417"><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536417"><span class="hs-identifier hs-var">kind_tycon</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TyCon -&gt; [SomeTypeRep] -&gt; TypeRep a
forall k (a :: k). TyCon -&gt; [SomeTypeRep] -&gt; TypeRep a
</span><a href="Data.Typeable.Internal.html#mkTrCon"><span class="hs-identifier hs-var">mkTrCon</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String -&gt; TyCon -&gt; TyCon
</span><a href="Data.Typeable.Internal.html#mkTypeLitTyCon"><span class="hs-identifier hs-var">mkTypeLitTyCon</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><a href="#local-6989586621679536418"><span class="hs-identifier hs-var">nm</span></a></span><span> </span><span class="annot"><span class="annottext">TyCon
</span><a href="#local-6989586621679536417"><span class="hs-identifier hs-var">kind_tycon</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span class="hs-special">]</span><span>
</span><span id="line-1005"></span><span>
</span><span id="line-1006"></span><span class="hs-comment">-- | For compiler use.</span><span>
</span><span id="line-1007"></span><span class="annot"><a href="Data.Typeable.Internal.html#mkTrFun"><span class="hs-identifier hs-type">mkTrFun</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="hs-keyword">forall</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537475"><span class="annot"><a href="#local-6989586621679537475"><span class="hs-identifier hs-type">m</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Multiplicity"><span class="hs-identifier hs-type">Multiplicity</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537477"><span class="annot"><a href="#local-6989586621679537477"><span class="hs-identifier hs-type">r1</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537476"><span class="annot"><a href="#local-6989586621679537476"><span class="hs-identifier hs-type">r2</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#RuntimeRep"><span class="hs-identifier hs-type">RuntimeRep</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1008"></span><span>                  </span><span class="hs-special">(</span><span id="local-6989586621679537474"><span class="annot"><a href="#local-6989586621679537474"><span class="hs-identifier hs-type">a</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537477"><span class="hs-identifier hs-type">r1</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-special">(</span><span id="local-6989586621679537473"><span class="annot"><a href="#local-6989586621679537473"><span class="hs-identifier hs-type">b</span></a></span></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#TYPE"><span class="hs-identifier hs-type">TYPE</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537476"><span class="hs-identifier hs-type">r2</span></a></span><span class="hs-special">)</span><span class="hs-operator">.</span><span>
</span><span id="line-1009"></span><span>           </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537475"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537474"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537473"><span class="hs-identifier hs-type">b</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="Data.Typeable.Internal.html#TypeRep"><span class="hs-identifier hs-type">TypeRep</span></a></span><span> </span><span class="hs-special">(</span><span class="hs-special">(</span><span class="annot"><a href="../../ghc-prim/src/GHC.Prim.html#FUN"><span class="hs-identifier hs-type">FUN</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537475"><span class="hs-identifier hs-type">m</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537474"><span class="hs-identifier hs-type">a</span></a></span><span> </span><span class="annot"><a href="#local-6989586621679537473"><span class="hs-identifier hs-type">b</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="../../ghc-prim/src/GHC.Types.html#Type"><span class="hs-identifier hs-type">Type</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-1010"></span><span id="mkTrFun"><span class="annot"><span class="annottext">mkTrFun :: forall (m :: Multiplicity) a b.
TypeRep m -&gt; TypeRep a -&gt; TypeRep b -&gt; TypeRep (a %m -&gt; b)
</span><a href="Data.Typeable.Internal.html#mkTrFun"><span class="hs-identifier hs-var hs-var">mkTrFun</span></a></span></span><span> </span><span id="local-6989586621679536416"><span class="annot"><span class="annottext">TypeRep m
</span><a href="#local-6989586621679536416"><span class="hs-identifier hs-var">mul</span></a></span></span><span> </span><span id="local-6989586621679536415"><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536415"><span class="hs-identifier hs-var">arg</span></a></span></span><span> </span><span id="local-6989586621679536414"><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536414"><span class="hs-identifier hs-var">res</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TrFun :: forall (m :: Multiplicity) a b.
Fingerprint
-&gt; TypeRep m -&gt; TypeRep a -&gt; TypeRep b -&gt; TypeRep (a %m -&gt; b)
</span><a href="Data.Typeable.Internal.html#TrFun"><span class="hs-identifier hs-type">TrFun</span></a></span><span>
</span><span id="line-1011"></span><span>    </span><span class="hs-special">{</span><span> </span><span class="annot"><span class="annottext">trFunFingerprint :: Fingerprint
</span><a href="Data.Typeable.Internal.html#trFunFingerprint"><span class="hs-identifier hs-var">trFunFingerprint</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">Fingerprint
</span><a href="#local-6989586621679536413"><span class="hs-identifier hs-var">fpr</span></a></span><span>
</span><span id="line-1012"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trFunMul :: TypeRep m
</span><a href="Data.Typeable.Internal.html#trFunMul"><span class="hs-identifier hs-var">trFunMul</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep m
</span><a href="#local-6989586621679536416"><span class="hs-identifier hs-var">mul</span></a></span><span>
</span><span id="line-1013"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trFunArg :: TypeRep a
</span><a href="Data.Typeable.Internal.html#trFunArg"><span class="hs-identifier hs-var">trFunArg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536415"><span class="hs-identifier hs-var">arg</span></a></span><span>
</span><span id="line-1014"></span><span>    </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">trFunRes :: TypeRep b
</span><a href="Data.Typeable.Internal.html#trFunRes"><span class="hs-identifier hs-var">trFunRes</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536414"><span class="hs-identifier hs-var">res</span></a></span><span> </span><span class="hs-special">}</span><span>
</span><span id="line-1015"></span><span>  </span><span class="hs-keyword">where</span><span> </span><span id="local-6989586621679536413"><span class="annot"><span class="annottext">fpr :: Fingerprint
</span><a href="#local-6989586621679536413"><span class="hs-identifier hs-var hs-var">fpr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">[Fingerprint] -&gt; Fingerprint
</span><a href="GHC.Fingerprint.html#fingerprintFingerprints"><span class="hs-identifier hs-var">fingerprintFingerprints</span></a></span><span> </span><span class="hs-special">[</span><span> </span><span class="annot"><span class="annottext">TypeRep m -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep m
</span><a href="#local-6989586621679536416"><span class="hs-identifier hs-var">mul</span></a></span><span>
</span><span id="line-1016"></span><span>                                      </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TypeRep a -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep a
</span><a href="#local-6989586621679536415"><span class="hs-identifier hs-var">arg</span></a></span><span>
</span><span id="line-1017"></span><span>                                      </span><span class="hs-special">,</span><span> </span><span class="annot"><span class="annottext">TypeRep b -&gt; Fingerprint
forall k (a :: k). TypeRep a -&gt; Fingerprint
</span><a href="Data.Typeable.Internal.html#typeRepFingerprint"><span class="hs-identifier hs-var">typeRepFingerprint</span></a></span><span> </span><span class="annot"><span class="annottext">TypeRep b
</span><a href="#local-6989586621679536414"><span class="hs-identifier hs-var">res</span></a></span><span class="hs-special">]</span><span>
</span><span id="line-1018"></span><span>
</span><span id="line-1019"></span><span class="hs-comment">{- $kind_instantiation

Consider a type like 'Data.Proxy.Proxy',

@
data Proxy :: forall k. k -&gt; Type
@

One might think that one could decompose an instantiation of this type like
@Proxy Int@ into two applications,

@
'App' (App a b) c === typeRep @(Proxy Int)
@

where,

@
a = typeRep @Proxy
b = typeRep @Type
c = typeRep @Int
@

However, this isn't the case. Instead we can only decompose into an application
and a constructor,

@
'App' ('Con' proxyTyCon) (typeRep @Int) === typeRep @(Proxy Int)
@

The reason for this is that 'Typeable' can only represent /kind-monomorphic/
types. That is, we must saturate enough of @Proxy@\'s arguments to
fully determine its kind. In the particular case of @Proxy@ this means we must
instantiate the kind variable @k@ such that no @forall@-quantified variables
remain.

While it is not possible to decompose the 'Con' above into an application, it is
possible to observe the kind variable instantiations of the constructor with the
'Con\'' pattern,

@
'App' (Con' proxyTyCon kinds) _ === typeRep @(Proxy Int)
@

Here @kinds@ will be @[typeRep \@Type]@.

-}</span><span>
</span><span id="line-1066"></span></pre></body></html>